From cc4a68b1801aaec6b5ecea86c1f9ea5e513d5126 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 31 Mar 2021 10:55:59 +0200 Subject: [PATCH 1/2] Revise optimization levels and add shorthands for speed and size --- cli/asc.js | 2 +- cli/asc.json | 14 +- tests/compiler/assert-nonnull.optimized.wat | 924 +- tests/compiler/binary.optimized.wat | 194 +- tests/compiler/builtins.optimized.wat | 221 +- tests/compiler/call-optional.optimized.wat | 31 +- tests/compiler/call-super.optimized.wat | 1953 +- tests/compiler/class-implements.optimized.wat | 703 +- .../compiler/class-overloading.optimized.wat | 2878 +- .../class-static-function.optimized.wat | 4 +- tests/compiler/class.optimized.wat | 930 +- tests/compiler/comma.optimized.wat | 33 +- tests/compiler/constructor.optimized.wat | 1213 +- tests/compiler/do.optimized.wat | 934 +- .../empty-exportruntime.optimized.wat | 639 +- tests/compiler/empty-new.optimized.wat | 534 +- tests/compiler/exports.optimized.wat | 772 +- .../exportstar-rereexport.optimized.wat | 735 +- .../extends-baseaggregate.optimized.wat | 2289 +- .../compiler/extends-recursive.optimized.wat | 483 +- .../features/reference-types.optimized.wat | 17 +- tests/compiler/features/simd.optimized.wat | 212 +- .../field-initialization.optimized.wat | 3114 +- tests/compiler/for.optimized.wat | 855 +- tests/compiler/function-call.optimized.wat | 842 +- .../function-expression.optimized.wat | 1087 +- tests/compiler/function-types.optimized.wat | 381 +- tests/compiler/getter-call.optimized.wat | 654 +- tests/compiler/heap.optimized.wat | 1252 +- .../implicit-getter-setter.optimized.wat | 553 +- tests/compiler/infer-array.optimized.wat | 1823 +- tests/compiler/infer-generic.optimized.wat | 733 +- tests/compiler/inlining.optimized.wat | 1089 +- tests/compiler/instanceof-class.optimized.wat | 839 +- tests/compiler/issues/1095.optimized.wat | 521 +- tests/compiler/issues/1225.optimized.wat | 767 +- tests/compiler/issues/1699.optimized.wat | 2323 +- tests/compiler/logical.optimized.wat | 569 +- tests/compiler/managed-cast.optimized.wat | 1261 +- tests/compiler/memcpy.optimized.wat | 5 +- tests/compiler/memmove.optimized.wat | 5 +- tests/compiler/memory.optimized.wat | 25 +- tests/compiler/memset.optimized.wat | 9 +- tests/compiler/new.optimized.wat | 571 +- tests/compiler/number.optimized.wat | 4212 +- tests/compiler/object-literal.optimized.wat | 3787 +- .../optional-typeparameters.optimized.wat | 659 +- tests/compiler/possibly-null.optimized.wat | 80 +- tests/compiler/reexport.optimized.wat | 711 +- tests/compiler/rereexport.optimized.wat | 729 +- tests/compiler/resolve-access.optimized.wat | 2389 +- tests/compiler/resolve-binary.optimized.wat | 5906 +- .../resolve-elementaccess.optimized.wat | 3985 +- .../resolve-function-expression.optimized.wat | 1419 +- tests/compiler/resolve-nested.optimized.wat | 750 +- tests/compiler/resolve-new.optimized.wat | 574 +- .../resolve-propertyaccess.optimized.wat | 1861 +- tests/compiler/resolve-ternary.optimized.wat | 3429 +- tests/compiler/resolve-unary.optimized.wat | 2324 +- tests/compiler/rt/finalize.optimized.wat | 781 +- tests/compiler/rt/instanceof.optimized.wat | 1001 +- .../runtime-incremental-export.optimized.wat | 639 +- .../rt/runtime-minimal-export.optimized.wat | 399 +- .../rt/runtime-stub-export.optimized.wat | 3 +- tests/compiler/std-wasi/console.optimized.wat | 2492 +- tests/compiler/std-wasi/crypto.optimized.wat | 3457 +- tests/compiler/std-wasi/process.optimized.wat | 4540 +- tests/compiler/std/array-access.optimized.wat | 523 +- .../compiler/std/array-literal.optimized.wat | 723 +- tests/compiler/std/array.optimized.wat | 42010 ++++---- tests/compiler/std/arraybuffer.optimized.wat | 3004 +- tests/compiler/std/dataview.optimized.wat | 4437 +- tests/compiler/std/date.optimized.wat | 867 +- tests/compiler/std/hash.optimized.wat | 7 - tests/compiler/std/map.optimized.wat | 29877 ++++-- tests/compiler/std/math.optimized.wat | 20389 ++-- tests/compiler/std/mod.optimized.wat | 817 +- tests/compiler/std/new.optimized.wat | 514 +- tests/compiler/std/object.optimized.wat | 626 +- .../std/operator-overloading.optimized.wat | 870 +- tests/compiler/std/pointer.optimized.wat | 1038 +- tests/compiler/std/set.optimized.wat | 19564 ++-- tests/compiler/std/static-array.optimized.wat | 1868 +- tests/compiler/std/staticarray.optimized.wat | 6516 +- .../std/string-casemapping.optimized.wat | 5156 +- .../std/string-encoding.optimized.wat | 4953 +- tests/compiler/std/string.optimized.wat | 8285 +- tests/compiler/std/symbol.optimized.wat | 4413 +- tests/compiler/std/trace.optimized.wat | 7 +- tests/compiler/std/typedarray.optimized.wat | 85348 +++++++++------- tests/compiler/super-inline.optimized.wat | 641 +- tests/compiler/switch.optimized.wat | 395 - tests/compiler/tablebase.optimized.wat | 4 +- tests/compiler/templateliteral.optimized.wat | 6180 +- tests/compiler/throw.optimized.wat | 969 +- tests/compiler/typeof.optimized.wat | 1551 +- tests/compiler/unary.optimized.wat | 30 +- tests/compiler/wasi/abort.optimized.wat | 81 +- tests/compiler/wasi/seed.optimized.wat | 320 +- tests/compiler/wasi/trace.optimized.wat | 2260 +- tests/compiler/while.optimized.wat | 1187 +- 101 files changed, 203073 insertions(+), 133477 deletions(-) diff --git a/cli/asc.js b/cli/asc.js index bbc9c1aca4..946af4d01d 100644 --- a/cli/asc.js +++ b/cli/asc.js @@ -171,7 +171,7 @@ exports.libraryPrefix = __getString(assemblyscript.LIBRARY_PREFIX.valueOf()); exports.defaultOptimizeLevel = 3; /** Default Binaryen shrink level. */ -exports.defaultShrinkLevel = 1; +exports.defaultShrinkLevel = 0; /** Bundled library files. */ exports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle diff --git a/cli/asc.json b/cli/asc.json index 34edc5a756..2997f65600 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -35,11 +35,11 @@ "description": [ "Optimizes the module. Typical shorthands are:", "", - " Default optimizations -O / -O3s", + " Default optimizations -O", " Make a release build -O --noAssert", " Make a debug build --debug", - " Optimize for speed -O3", - " Optimize for size -O3z --converge", + " Optimize for speed -Ospeed", + " Optimize for size -Osize", "" ], "type": "b", @@ -377,8 +377,8 @@ "description": "Specifies node.js options (CLI only). See: node --help" }, - "-Os": { "value": { "optimize": true, "shrinkLevel": 1 } }, - "-Oz": { "value": { "optimize": true, "shrinkLevel": 2 } }, + "-Os": { "value": { "optimizeLevel": 0, "shrinkLevel": 1 } }, + "-Oz": { "value": { "optimizeLevel": 0, "shrinkLevel": 2 } }, "-O0": { "value": { "optimizeLevel": 0, "shrinkLevel": 0 } }, "-O1": { "value": { "optimizeLevel": 1, "shrinkLevel": 0 } }, "-O2": { "value": { "optimizeLevel": 2, "shrinkLevel": 0 } }, @@ -390,5 +390,7 @@ "-O0z": { "value": { "optimizeLevel": 0, "shrinkLevel": 2 } }, "-O1z": { "value": { "optimizeLevel": 1, "shrinkLevel": 2 } }, "-O2z": { "value": { "optimizeLevel": 2, "shrinkLevel": 2 } }, - "-O3z": { "value": { "optimizeLevel": 3, "shrinkLevel": 2 } } + "-O3z": { "value": { "optimizeLevel": 3, "shrinkLevel": 2 } }, + "-Ospeed": { "value": { "optimizeLevel": 3, "shrinkLevel": 0 } }, + "-Osize": { "value": { "optimizeLevel": 0, "shrinkLevel": 2, "converge": true } } } diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 130dcf08ea..18433c64e4 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -1,7 +1,6 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result 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))) (memory $0 1) @@ -30,7 +29,12 @@ (export "testRet" (func $export:assert-nonnull/testRet)) (export "testObjFn" (func $export:assert-nonnull/testObjFn)) (export "testObjRet" (func $export:assert-nonnull/testObjRet)) - (func $~stack_check + (func $~lib/array/Array#__get (param $0 i32) (result i32) + (local $1 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 1404 i32.lt_s @@ -42,13 +46,6 @@ call $~lib/builtins/abort unreachable end - ) - (func $~lib/array/Array#__get (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -64,12 +61,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.load offset=4 i32.load local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -80,7 +78,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + if + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -105,7 +113,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + if + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -127,306 +145,397 @@ global.set $~lib/memory/__stack_pointer ) (func $export:assert-nonnull/testProp (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 1056 - i32.const 1120 - i32.const 15 - i32.const 10 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1120 + i32.const 15 + i32.const 10 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:assert-nonnull/testArr (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - i32.const 1056 - i32.const 1120 - i32.const 19 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - i32.eqz - if - i32.const 1184 - i32.const 1248 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.load - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 1296 - i32.const 1248 - i32.const 96 - i32.const 40 - call $~lib/builtins/abort - unreachable + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1120 + i32.const 19 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1184 + i32.const 1248 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1296 + i32.const 1248 + i32.const 96 + i32.const 40 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:assert-nonnull/testElem (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 1056 - i32.const 1120 - i32.const 23 - i32.const 10 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1120 + i32.const 23 + i32.const 10 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:assert-nonnull/testAll (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.set $1 - global.get $~lib/memory/__stack_pointer - local.set $2 - block $__inlined_func$assert-nonnull/testAll - block $folding-inner0 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - local.get $1 - local.get $0 - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$assert-nonnull/testAll + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + 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 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + block $__inlined_func$assert-nonnull/testAll + block $folding-inner0 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner0 + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$assert-nonnull/testAll + end + i32.const 1056 + i32.const 1120 + i32.const 27 + i32.const 10 + call $~lib/builtins/abort + unreachable end - i32.const 1056 - i32.const 1120 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:assert-nonnull/testAll2 (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.set $1 - global.get $~lib/memory/__stack_pointer - local.set $2 - block $__inlined_func$assert-nonnull/testAll2 - block $folding-inner0 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - local.get $1 - local.get $0 - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$assert-nonnull/testAll2 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + 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 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + block $__inlined_func$assert-nonnull/testAll2 + block $folding-inner0 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner0 + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$assert-nonnull/testAll2 + end + i32.const 1056 + i32.const 1120 + i32.const 31 + i32.const 10 + call $~lib/builtins/abort + unreachable end - i32.const 1056 - i32.const 1120 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:assert-nonnull/testFn (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + if + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -444,93 +553,138 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.eqz - if - i32.const 1056 - i32.const 1120 - i32.const 39 - i32.const 13 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1120 + i32.const 39 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + call_indirect $0 (type $none_=>_i32) + 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.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.store - local.get $0 - i32.load - call_indirect $0 (type $none_=>_i32) - 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.add - global.set $~lib/memory/__stack_pointer + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:assert-nonnull/testRet (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load + call_indirect $0 (type $none_=>_i32) + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1120 + i32.const 44 + i32.const 10 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $0 - i32.store - local.get $0 - i32.eqz + i32.const 1404 + i32.lt_s if - i32.const 1056 - i32.const 1120 - i32.const 44 - i32.const 10 + i32.const 17808 + i32.const 17856 + i32.const 1 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -543,47 +697,65 @@ global.set $~lib/memory/__stack_pointer ) (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 1056 - i32.const 1120 - i32.const 52 - i32.const 10 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.load + call_indirect $0 (type $none_=>_i32) + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1120 + i32.const 52 + i32.const 10 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index fedaffe9fa..a4d40070f2 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -1,51 +1,153 @@ (module (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) + (memory $0 1) + (data (i32.const 1029) "\a0\f6?") + (data (i32.const 1041) "\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?") + (data (i32.const 1073) "\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?") + (data (i32.const 1105) "XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?") + (data (i32.const 1137) "\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?") + (data (i32.const 1169) "xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?") + (data (i32.const 1201) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") + (data (i32.const 1233) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") + (data (i32.const 1265) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") + (data (i32.const 1297) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") + (data (i32.const 1329) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") + (data (i32.const 1361) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") + (data (i32.const 1393) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") + (data (i32.const 1425) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") + (data (i32.const 1457) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") + (data (i32.const 1489) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") + (data (i32.const 1521) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") + (data (i32.const 1553) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") + (data (i32.const 1585) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") + (data (i32.const 1617) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") + (data (i32.const 1649) "@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?") + (data (i32.const 1681) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") + (data (i32.const 1713) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") + (data (i32.const 1745) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") + (data (i32.const 1777) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") + (data (i32.const 1809) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") + (data (i32.const 1841) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") + (data (i32.const 1873) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") + (data (i32.const 1905) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") + (data (i32.const 1937) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") + (data (i32.const 1969) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") + (data (i32.const 2001) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") + (data (i32.const 2033) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") + (data (i32.const 2065) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") + (data (i32.const 2097) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") + (data (i32.const 2129) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") + (data (i32.const 2161) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") + (data (i32.const 2193) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") + (data (i32.const 2225) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") + (data (i32.const 3729) "`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?") + (data (i32.const 3761) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") + (data (i32.const 3793) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") + (data (i32.const 3825) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") + (data (i32.const 3857) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") + (data (i32.const 3889) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") + (data (i32.const 3921) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") + (data (i32.const 3953) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") + (data (i32.const 3985) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") + (data (i32.const 4017) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") + (data (i32.const 4049) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") + (data (i32.const 4081) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") + (data (i32.const 4113) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") + (data (i32.const 4145) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") + (data (i32.const 4177) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") + (data (i32.const 4209) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") + (data (i32.const 4241) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") + (data (i32.const 4273) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") + (data (i32.const 4306) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") + (data (i32.const 4338) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") + (data (i32.const 4369) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") + (data (i32.const 4401) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") + (data (i32.const 4433) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") + (data (i32.const 4465) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") + (data (i32.const 4497) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") + (data (i32.const 4529) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") + (data (i32.const 4562) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") + (data (i32.const 4593) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") + (data (i32.const 4625) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") + (data (i32.const 4657) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") + (data (i32.const 4689) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") + (data (i32.const 4721) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") + (data (i32.const 4753) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") + (data (i32.const 4785) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") + (data (i32.const 4817) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") + (data (i32.const 4849) "`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data (i32.const 7168) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\0d\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") + (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?") (global $binary/i (mut i32) (i32.const 0)) (global $binary/I (mut i64) (i64.const 0)) (global $binary/f (mut f32) (f32.const 0)) (global $binary/F (mut f64) (f64.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/math/ipow32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - i32.const 1 - local.set $1 - i32.const 1 - local.set $2 - loop $while-continue|0 - local.get $1 - if - local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|0 - end - end - local.get $2 - ) - (func $start:binary + (func $~start (local $0 f32) (local $1 f64) - global.get $binary/i - call $~lib/math/ipow32 - drop + block $__inlined_func$~lib/math/ipow32 + global.get $binary/i + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/math/ipow32 + end global.get $binary/i i32.const 1 i32.add @@ -57,19 +159,12 @@ i32.const 0 global.set $binary/i i32.const 0 - call $~lib/math/ipow32 global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shl + i32.const 0 global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shr_s + i32.const 0 global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shr_u + i32.const 0 global.set $binary/i global.get $binary/i i32.const 1 @@ -222,7 +317,4 @@ 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 d4de8d6298..9d91f6e883 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -3,7 +3,6 @@ (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_=>_i32 (func (param i32) (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))) (memory $0 1) @@ -102,7 +101,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -116,36 +115,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -158,33 +162,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -192,21 +196,6 @@ end i32.eqz ) - (func $~lib/atomics/Atomics.isLockFree (param $0 i32) (result i32) - i32.const 1 - local.get $0 - i32.const 4 - i32.eq - i32.const 1 - local.get $0 - i32.const 2 - i32.eq - local.get $0 - i32.const 1 - i32.eq - select - select - ) (func $start:builtins~anonymous|1 nop ) @@ -217,6 +206,7 @@ call $start:builtins ) (func $start:builtins + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -233,9 +223,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=8 i32.const 31 @@ -593,9 +584,10 @@ i32.const 1168 i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1056 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store offset=4 i32.const 1056 @@ -620,9 +612,10 @@ i32.const 1168 i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1200 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1200 i32.store offset=4 i32.const 1200 @@ -706,82 +699,6 @@ i32.const 8 f64.const 1 f64.store - i32.const 0 - call $~lib/atomics/Atomics.isLockFree - if - i32.const 0 - i32.const 1120 - i32.const 494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 496 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/atomics/Atomics.isLockFree - if - i32.const 0 - i32.const 1120 - i32.const 497 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - call $~lib/atomics/Atomics.isLockFree - if - i32.const 0 - i32.const 1120 - i32.const 499 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - call $~lib/atomics/Atomics.isLockFree - if - i32.const 0 - i32.const 1120 - i32.const 500 - i32.const 1 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer i32.const 1280 i32.store @@ -794,9 +711,10 @@ f64.const 24 call $~lib/builtins/trace global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1376 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1376 i32.store offset=4 i32.const 1376 @@ -812,9 +730,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1376 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1376 i32.store offset=4 i32.const 1376 @@ -830,9 +749,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1424 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1424 i32.store offset=4 i32.const 1424 @@ -848,9 +768,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1456 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1456 i32.store offset=4 i32.const 1456 @@ -866,9 +787,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1488 i32.store offset=4 i32.const 1488 @@ -884,9 +806,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1520 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1520 i32.store offset=4 i32.const 1520 @@ -902,9 +825,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1552 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1552 i32.store offset=4 i32.const 1552 @@ -920,9 +844,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1584 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1584 i32.store offset=4 i32.const 1584 @@ -938,9 +863,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1616 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1616 i32.store offset=4 i32.const 1616 @@ -956,9 +882,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1648 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1648 i32.store offset=4 i32.const 1648 @@ -974,9 +901,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1680 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1680 i32.store offset=4 i32.const 1680 @@ -992,9 +920,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -1010,9 +939,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1744 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1744 i32.store offset=4 i32.const 1744 @@ -1028,9 +958,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1776 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1776 i32.store offset=4 i32.const 1776 @@ -1046,9 +977,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1808 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=4 i32.const 1808 @@ -1064,9 +996,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1840 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1840 i32.store offset=4 i32.const 1840 @@ -1082,9 +1015,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1872 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1872 i32.store offset=4 i32.const 1872 @@ -1100,9 +1034,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1904 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1904 i32.store offset=4 i32.const 1904 @@ -1118,9 +1053,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1456 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1456 i32.store offset=4 i32.const 1456 @@ -1136,9 +1072,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1376 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1376 i32.store offset=4 i32.const 1376 diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index 977485b460..4116a67c18 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -37,37 +37,11 @@ i32.add i32.add ) - (func $start:call-optional + (func $~start i32.const 1 global.set $~argumentsLength - i32.const 3 - i32.const 0 - i32.const 0 - call $call-optional/opt@varargs - if - i32.const 0 - i32.const 1056 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end i32.const 2 global.set $~argumentsLength - i32.const 3 - i32.const 4 - i32.const 0 - call $call-optional/opt@varargs - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end i32.const 1 global.set $~argumentsLength i32.const 3 @@ -121,7 +95,4 @@ unreachable end ) - (func $~start - call $start:call-optional - ) ) diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 830675ff78..19bfde9c4f 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1,12 +1,11 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 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_=>_none (func (param i32 i32 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))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -36,15 +35,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17980)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -90,170 +80,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17980 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17980 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1168 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -541,12 +515,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -900,7 +874,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -963,7 +942,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1043,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17980 i32.ge_u if @@ -1053,19 +1037,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1082,11 +1066,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1083,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1120,28 +1109,28 @@ i32.shr_u local.set $1 else - i32.const 31 local.get $1 - i32.const 1 - i32.const 27 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 local.get $1 i32.clz i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1238,11 +1227,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1253,50 +1311,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1304,18 +1366,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1323,18 +1385,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1346,7 +1408,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1359,12 +1421,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1378,54 +1440,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1435,125 +1497,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1561,7 +1662,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1594,732 +1695,680 @@ end end end + local.get $2 ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $call-super/I + block $call-super/J + block $call-super/G + block $call-super/H + block $call-super/E + block $call-super/F + block $call-super/C + block $call-super/D + block $call-super/A + block $call-super/B + 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 $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $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 + return + end + return + end + return + end + return + end + return + end + return end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 + return end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - 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 + return end + return 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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 + unreachable ) - (func $call-super/test2 + (func $~start (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + memory.size + i32.const 16 + i32.shl + i32.const 17980 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 1224 + i32.const 1216 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + 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 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 38 - i32.const 5 - 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 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1056 - i32.const 45 + i32.store + local.get $0 + i32.const 8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + 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 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 46 - 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 - ) - (func $call-super/test3 - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 15 + i32.const 5 + 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 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 22 + 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 23 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + 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 8 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if + local.get $0 + i32.const 2 + i32.store offset=4 + 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 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 66 - 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 67 - 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 - ) - (func $call-super/test4 - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 84 - 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 85 - 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 - ) - (func $call-super/test5 - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 38 + i32.const 5 + 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 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + 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 46 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + 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 8 + i32.const 7 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + 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 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 105 - 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 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $call-super/I - block $call-super/J - block $call-super/G - block $call-super/H - block $call-super/E - block $call-super/F - block $call-super/C - block $call-super/D - block $call-super/A - block $call-super/B - 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 $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $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 - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - return - end - unreachable - ) - (func $~start - (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 17980 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1216 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1248 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $call-super/B#constructor - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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.const 2 + i32.store offset=4 + 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 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 66 + 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 67 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1056 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1056 - i32.const 23 - 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 - call $call-super/test2 - call $call-super/test3 - call $call-super/test4 - call $call-super/test5 - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - if - i32.const 18000 - i32.const 18048 + i32.store + local.get $0 + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + 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 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 i32.const 1 + i32.store + 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.const 2 + i32.store offset=4 + 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 + local.get $0 + i32.load i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $call-super/B#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 84 + 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 85 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + 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 8 + i32.const 11 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if + 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 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + 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.const 2 + i32.store offset=4 + 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 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 104 + 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 105 + 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 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + i32.const 18000 + i32.const 18048 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 15 - i32.const 5 - 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 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index a7decd8243..bcc1f89fa2 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (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_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -45,15 +45,6 @@ (export "C#foo" (func $export:class-implements/C#foo)) (export "C#constructor" (func $export:class-implements/C#constructor)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -111,170 +102,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17948 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17948 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1504 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -562,12 +537,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -921,7 +896,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -984,7 +964,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1064,7 +1049,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17948 i32.ge_u if @@ -1074,19 +1059,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1103,11 +1088,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1117,10 +1105,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1187,44 +1177,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + memory.size + local.tee $1 i32.const 16 - i32.shr_u - local.set $1 + i32.shl + i32.const 4 + i32.sub local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + 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 $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1232,15 +1274,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1267,22 +1309,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1291,32 +1333,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1328,70 +1370,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1444,11 +1450,22 @@ unreachable ) (func $~start + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1460,14 +1477,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 call $class-implements/A#constructor @@ -1479,14 +1511,19 @@ call $class-implements/C#constructor global.set $class-implements/c global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $class-implements/c i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~stack_check + (func $class-implements/A#constructor (param $0 i32) (result 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 1564 i32.lt_s @@ -1498,13 +1535,6 @@ call $~lib/builtins/abort unreachable end - ) - (func $class-implements/A#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1524,63 +1554,92 @@ local.get $0 ) (func $class-implements/C#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:class-implements/A#foo (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1591,7 +1650,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -1603,15 +1672,27 @@ global.set $~lib/memory/__stack_pointer ) (func $export:class-implements/C#foo (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1622,7 +1703,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 61a709c927..0f10da7a2e 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) + (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_=>_none (func (param i32 i32 i32))) @@ -59,15 +59,6 @@ (global $~started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -149,170 +140,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18316 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18316 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1152 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1792 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1796 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -600,12 +575,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -959,7 +934,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1022,7 +1002,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1102,7 +1087,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18316 i32.ge_u if @@ -1112,19 +1097,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1141,11 +1126,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1155,10 +1143,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1225,44 +1215,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + memory.size + local.tee $1 i32.const 16 - i32.shr_u - local.set $1 + i32.shl + i32.const 4 + i32.sub local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + 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 $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1270,15 +1312,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1305,22 +1347,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1329,32 +1371,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1366,70 +1408,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1469,7 +1475,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -1483,36 +1489,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -1525,33 +1536,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -1568,21 +1579,9 @@ i32.const 8 i32.sub i32.load - local.tee $0 i32.const 4 - i32.eq - local.get $0 - i32.const 6 - i32.eq - i32.or - br_if $case0 - block $tablify|0 - local.get $0 - i32.const 5 - i32.sub - br_table $case1 $tablify|0 $case0 $case2 $tablify|0 - end - br $default + i32.sub + br_table $case0 $case1 $case0 $case0 $case2 $default end i32.const 1520 global.set $class-overloading/which @@ -1598,162 +1597,6 @@ i32.const 1488 global.set $class-overloading/which ) - (func $class-overloading/A#b@virtual (param $0 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 4 - i32.eq - local.get $0 - i32.const 6 - i32.eq - i32.or - br_if $case0 - block $tablify|0 - local.get $0 - i32.const 5 - i32.sub - br_table $case1 $tablify|0 $case0 $case2 $tablify|0 - end - br $default - end - i32.const 1520 - global.set $class-overloading/which - return - end - i32.const 1616 - global.set $class-overloading/which - return - end - i32.const 1648 - global.set $class-overloading/which - return - end - i32.const 1488 - global.set $class-overloading/which - ) - (func $class-overloading/IA#foo@virtual (param $0 i32) - block $default - block $case1 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 10 - i32.ne - if - local.get $0 - i32.const 12 - i32.eq - br_if $case1 - br $default - end - i32.const 1680 - global.set $class-overloading/which - return - end - i32.const 1712 - global.set $class-overloading/which - return - end - unreachable - ) - (func $class-overloading/A2#foo@virtual (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 14 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - 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 - i32.store - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 15 - i32.ne - if - i32.const 1744 - i32.const 1552 - i32.const 186 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 - return - end - i32.const 1744 - i32.const 1552 - i32.const 198 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $class-overloading/A1 @@ -1831,7 +1674,12 @@ global.set $~started call $start:class-overloading ) - (func $~stack_check + (func $class-overloading/C#a + (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 1932 i32.lt_s @@ -1843,22 +1691,16 @@ call $~lib/builtins/abort unreachable end - ) - (func $class-overloading/C#a - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $0 i64.const 0 i64.store i32.const 1520 global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1520 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1520 i32.store offset=4 i32.const 1520 @@ -1882,822 +1724,1372 @@ ) (func $start:class-overloading (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 18316 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1232 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1376 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $class-overloading/B#constructor - global.set $class-overloading/a - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#a@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 44 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 18316 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if + 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 i32.const 0 - i32.const 1552 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-overloading/B#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/c - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/c - i32.store - call $class-overloading/C#a - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store offset=4 - local.get $0 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/c - i32.store - i32.const 1616 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store offset=4 - i32.const 1616 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/c - i32.store - i32.const 1616 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store offset=4 - i32.const 1616 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/c - i32.store - i32.const 1616 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store offset=4 - i32.const 1616 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/D#constructor - global.set $class-overloading/a - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#a@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/E#constructor - global.set $class-overloading/a - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#a@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-overloading/E#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/a - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#a@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=4 - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if + call $class-overloading/B#constructor + global.set $class-overloading/a + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case0 $case1 $case0 $case0 $case2 $default + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@virtual + block $default0 + block $case21 + block $case12 + block $case03 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case03 $case12 $case03 $case03 $case21 $default0 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual4 + block $default5 + block $case26 + block $case17 + block $case08 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case08 $case17 $case08 $case08 $case26 $default5 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual4 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual4 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual4 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=4 - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/B#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/c + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + i32.store + call $class-overloading/C#a + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1616 + i32.store offset=4 + local.get $1 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + local.get $0 + i32.const 1616 + i32.store + local.get $0 + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + local.get $0 + i32.const 1616 + i32.store + local.get $0 + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + local.get $0 + i32.const 1616 + i32.store + local.get $0 + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=4 - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if + call $class-overloading/D#constructor + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual10 + block $default11 + block $case212 + block $case113 + block $case014 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case014 $case113 $case014 $case014 $case212 $default11 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual10 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual10 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual10 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@virtual15 + block $default16 + block $case217 + block $case118 + block $case019 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case019 $case118 $case019 $case019 $case217 $default16 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual15 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual15 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual15 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual20 + block $default21 + block $case222 + block $case123 + block $case024 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case024 $case123 $case024 $case024 $case222 $default21 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual20 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual20 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual20 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#b@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=4 - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if + call $class-overloading/E#constructor + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual25 + block $default26 + block $case227 + block $case128 + block $case029 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case029 $case128 $case029 $case029 $case227 $default26 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual25 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual25 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual25 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@virtual30 + block $default31 + block $case232 + block $case133 + block $case034 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case034 $case133 $case034 $case034 $case232 $default31 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual30 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual30 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual30 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual35 + block $default36 + block $case237 + block $case138 + block $case039 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case039 $case138 $case039 $case039 $case237 $default36 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual35 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual35 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual35 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/ia - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/ia - local.tee $0 - i32.store - local.get $0 - call $class-overloading/IA#foo@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1680 - i32.store offset=4 - local.get $0 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/E#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1648 + i32.store offset=4 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual41 + block $default42 + block $case243 + block $case144 + block $case045 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case045 $case144 $case045 $case045 $case243 $default42 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual41 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual41 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual41 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1648 + i32.store offset=4 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@virtual46 + block $default47 + block $case248 + block $case149 + block $case050 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case050 $case149 $case050 $case050 $case248 $default47 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual46 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual46 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual46 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1648 + i32.store offset=4 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual51 + block $default52 + block $case253 + block $case154 + block $case055 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case055 $case154 $case055 $case055 $case253 $default52 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual51 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual51 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual51 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1648 + i32.store offset=4 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/ic - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/ic - local.tee $0 - i32.store - local.get $0 - call $class-overloading/IA#foo@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=4 - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/ia + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/ia + local.tee $0 + i32.store + block $__inlined_func$class-overloading/IA#foo@virtual + block $default57 + block $case158 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 12 + i32.eq + br_if $case158 + br $default57 + end + i32.const 1680 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@virtual + end + i32.const 1712 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@virtual + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1680 + i32.store offset=4 + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/ic + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/ic + local.tee $0 + i32.store + block $__inlined_func$class-overloading/IA#foo@virtual6 + block $default7 + block $case18 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 12 + i32.eq + br_if $case18 + br $default7 + end + i32.const 1680 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@virtual6 + end + i32.const 1712 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@virtual6 + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1712 + i32.store offset=4 + local.get $1 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 1932 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 13 + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 14 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/b2 - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/b2 - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A2#foo@virtual - i32.const 3 - i32.ne - if + 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 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1552 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/b2 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/b2 + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A2#foo@virtual + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq + if + 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 1932 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + 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 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + 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 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + 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 + 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 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 15 + i32.ne + if + i32.const 1744 + i32.const 1552 + i32.const 186 + i32.const 5 + 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$class-overloading/A2#foo@virtual + end + i32.const 1744 + i32.const 1552 + i32.const 198 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 18336 + i32.const 18384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $class-overloading/B#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 18336 + i32.const 18384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $class-overloading/D#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + if + i32.const 18336 + i32.const 18384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -2726,7 +3118,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + if + i32.const 18336 + i32.const 18384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat index 7558c6d1d1..8da04baa88 100644 --- a/tests/compiler/class-static-function.optimized.wat +++ b/tests/compiler/class-static-function.optimized.wat @@ -17,6 +17,7 @@ i32.const 42 ) (func $~start + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -33,9 +34,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store i32.const 1056 diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index ece2fbb193..063daa378a 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1,12 +1,12 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (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_=>_none (func (param i32 i32 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))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -41,15 +41,6 @@ (export "memory" (memory $0)) (export "test" (func $export:class/test)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -97,49 +88,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -164,7 +116,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -187,7 +139,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -197,15 +149,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -241,7 +198,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -548,12 +527,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -907,7 +886,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -970,7 +954,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1050,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17972 i32.ge_u if @@ -1060,19 +1049,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1089,11 +1078,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1103,10 +1095,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1127,28 +1121,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1245,268 +1239,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1604,6 +1399,10 @@ ) (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 @@ -1621,12 +1420,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1642,13 +1441,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1659,30 +1459,244 @@ 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 + 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.ge_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 30 + 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 - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.tee $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 $2 + local.get $6 local.get $0 i32.store offset=16 - local.get $2 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 - call $~lib/rt/itcms/Object#linkTo + 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 $2 + local.get $6 i32.load i32.const -4 i32.and @@ -1690,7 +1704,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 + local.get $6 i32.const 20 i32.add local.tee $1 @@ -1699,7 +1713,6 @@ local.get $1 ) (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - (local $2 i32) local.get $0 local.get $1 i32.store @@ -1732,8 +1745,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1745,7 +1756,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1765,74 +1776,91 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/memory/memory.fill - local.get $0 - local.get $1 - call $~lib/array/Array#set:buffer - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - call $~lib/array/Array#set:buffer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1588 + 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.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + 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 1588 + 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 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/memory/memory.fill + local.get $0 + local.get $1 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + call $~lib/array/Array#set:buffer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18000 + i32.const 18048 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -1877,17 +1905,37 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) - (func $~stack_check + (func $export:class/test (param $0 i32) (result i32) + (local $1 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 1588 i32.lt_s @@ -1899,14 +1947,8 @@ call $~lib/builtins/abort unreachable end - ) - (func $export:class/test (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store local.get $0 @@ -1927,7 +1969,7 @@ local.get $0 i32.const 3 i32.store8 offset=6 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index f8743b6dde..e21797b6a7 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -9,15 +9,15 @@ (global $comma/b (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $start:comma + (func $~start (local $0 i32) (local $1 i32) global.get $comma/a - local.tee $1 + local.tee $0 i32.const 1 i32.add global.set $comma/a - local.get $1 + local.get $0 global.set $comma/b global.get $comma/a i32.const 1 @@ -44,8 +44,9 @@ i32.add global.set $comma/a global.get $comma/a + local.tee $0 global.set $comma/b - global.get $comma/a + local.get $0 i32.const 2 i32.ne if @@ -81,23 +82,34 @@ global.set $comma/b i32.const 2 global.set $comma/a + global.get $comma/b + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 + local.get $1 global.get $comma/a - local.get $0 - i32.gt_s + i32.lt_s if global.get $comma/a i32.const 1 i32.sub global.set $comma/a - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -109,7 +121,4 @@ unreachable end ) - (func $~start - call $start:comma - ) ) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 689db7a8d4..db98f05af1 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,12 +1,11 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 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_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -44,15 +43,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17932)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -158,170 +148,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17932 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17932 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -609,12 +583,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -968,7 +942,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1031,7 +1010,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1111,7 +1095,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17932 i32.ge_u if @@ -1121,19 +1105,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1150,11 +1134,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1164,10 +1151,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1188,29 +1177,29 @@ i32.shr_u local.set $1 else - i32.const 31 local.get $1 - i32.const 1 - i32.const 27 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 local.get $1 i32.clz i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 + local.tee $2 + i32.const 4 i32.sub i32.shr_u i32.const 16 @@ -1306,11 +1295,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1321,50 +1379,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1372,18 +1434,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1391,18 +1453,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1414,7 +1476,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1427,12 +1489,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1446,54 +1508,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1503,125 +1565,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1629,7 +1730,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1662,102 +1763,7 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) @@ -1769,214 +1775,274 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 i32.const 1168 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $constructor/emptyCtor - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1176 + i32.const 1168 i32.store - local.get $0 - i32.const 1 + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $constructor/emptyCtorWithFieldInit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 1208 + i32.const 1200 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 i32.store - local.get $0 - i32.const 0 + i32.const 1352 + i32.const 1344 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $constructor/emptyCtorWithFieldNoInit + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1548 + 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 0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtor + 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 1548 + 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.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldInit + 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 1548 + 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.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldNoInit + 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 1548 + 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.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldAccess + 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 1548 + 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 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/none + 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 1548 + 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.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/justFieldInit + 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 1548 + 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.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/justFieldNoInit + i32.const 0 + global.set $constructor/ctorReturns + 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 1548 + 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 0 + i32.const 11 + call $~lib/rt/itcms/__new + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + global.set $constructor/ctorConditionallyReturns + 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 1548 + 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 0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/ctorConditionallyReturnsThis + return + end + i32.const 17952 + i32.const 18000 i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $constructor/emptyCtorWithFieldAccess - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $constructor/none - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $constructor/justFieldInit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $constructor/justFieldNoInit - i32.const 0 - global.set $constructor/ctorReturns - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 11 - call $~lib/rt/itcms/__new - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - global.set $constructor/ctorConditionallyReturns - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $constructor/ctorConditionallyReturnsThis + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -2037,17 +2103,4 @@ (func $~start call $start:constructor ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - if - i32.const 17952 - i32.const 18000 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) ) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index b081c8036a..6be75ccc9e 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result 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_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -35,15 +35,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17892)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -89,170 +80,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17892 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17892 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1152 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1472 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -540,12 +515,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -899,7 +874,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -962,7 +942,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1042,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17892 i32.ge_u if @@ -1052,19 +1037,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1081,11 +1066,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1083,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1165,44 +1155,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 4 + memory.size + local.tee $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $1 + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1210,17 +1252,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1231,7 +1273,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1245,10 +1287,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1259,14 +1301,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1276,26 +1318,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1305,26 +1347,67 @@ i32.and i32.store end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) (func $start:do (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 10 - local.set $0 + local.set $2 loop $do-continue|0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.const 1 i32.sub - local.tee $0 + local.tee $2 br_if $do-continue|0 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1056 @@ -1333,7 +1416,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1345,17 +1428,17 @@ unreachable end i32.const 10 - local.set $1 + local.set $0 loop $do-continue|00 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 br_if $do-continue|00 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -1367,30 +1450,30 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const 10 - local.set $1 + local.set $0 loop $do-continue|01 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - local.get $2 + local.set $0 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 loop $do-continue|1 - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - local.get $1 + local.set $2 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 br_if $do-continue|1 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1056 @@ -1399,7 +1482,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 9 i32.ne if @@ -1410,10 +1493,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 br_if $do-continue|01 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1056 @@ -1422,7 +1505,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.ne if @@ -1433,7 +1516,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 9 i32.ne if @@ -1446,14 +1529,14 @@ end i32.const 0 local.set $0 - loop $do-continue|012 + loop $do-continue|02 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 10 i32.ne - br_if $do-continue|012 + br_if $do-continue|02 end local.get $0 i32.const 10 @@ -1468,14 +1551,14 @@ end i32.const 0 local.set $0 - loop $do-continue|02 + loop $do-continue|03 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 10 i32.ne - br_if $do-continue|02 + br_if $do-continue|03 end local.get $0 i32.const 10 @@ -1490,14 +1573,14 @@ end i32.const 0 local.set $0 - loop $do-continue|03 + loop $do-continue|04 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 10 i32.ne - br_if $do-continue|03 + br_if $do-continue|04 end local.get $0 i32.const 10 @@ -1511,30 +1594,30 @@ unreachable end i32.const 0 - local.set $1 - i32.const 0 local.set $0 - loop $do-continue|04 - local.get $1 + i32.const 0 + local.set $2 + loop $do-continue|05 + local.get $0 i32.const 1 i32.add - local.tee $1 + local.tee $0 i32.const 10 i32.ne if - loop $do-continue|15 - local.get $0 + loop $do-continue|17 + local.get $2 i32.const 1 i32.add - local.tee $0 + local.tee $2 i32.const 10 i32.rem_s - br_if $do-continue|15 + br_if $do-continue|17 end - br $do-continue|04 + br $do-continue|05 end end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1545,7 +1628,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 90 i32.ne if @@ -1564,159 +1647,191 @@ 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $do/Ref#constructor - i32.store - loop $do-continue|06 - local.get $1 - i32.const 1 - i32.add + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.tee $1 - i32.const 10 - i32.eq - if - i32.const 0 - local.set $0 - else - global.get $~lib/memory/__stack_pointer - call $do/Ref#constructor - local.tee $0 - i32.store - end - local.get $0 - br_if $do-continue|06 - end - local.get $1 - i32.const 10 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 151 - 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 - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $do/Ref#constructor - local.tee $0 - i32.store - loop $do-continue|07 - block $do-break|0 - local.get $1 + i32.store + local.get $1 + call $do/Ref#constructor + i32.store + loop $do-continue|08 + local.get $2 i32.const 1 i32.add - local.tee $1 + local.tee $2 i32.const 10 i32.eq if i32.const 0 local.set $0 - br $do-break|0 + else + global.get $~lib/memory/__stack_pointer + call $do/Ref#constructor + local.tee $0 + i32.store end - call $do/Ref#constructor - br_if $do-continue|07 + local.get $0 + br_if $do-continue|08 end - end - local.get $1 - i32.const 10 - i32.ne - if + local.get $2 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 151 + 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 i32.const 0 - i32.const 1056 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - if + 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 1508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1056 - i32.const 171 - 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/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 + i32.store + local.get $1 + call $do/Ref#constructor + local.tee $2 + i32.store + loop $do-continue|06 + block $do-break|07 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $2 + br $do-break|07 + end + call $do/Ref#constructor + br_if $do-continue|06 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + if + i32.const 0 + i32.const 1056 + i32.const 171 + 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/rt/itcms/state + 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|0 + 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 + return 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 + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1750,7 +1865,12 @@ (func $~start call $start:do ) - (func $~stack_check + (func $do/Ref#constructor (result i32) + (local $0 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 1508 i32.lt_s @@ -1762,92 +1882,12 @@ call $~lib/builtins/abort unreachable end - ) - (func $do/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 3 - i32.store offset=12 - local.get $0 i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + i32.store local.get $0 - i32.const 20 - i32.add + call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index ab75059b7f..5ad142a355 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -1,12 +1,12 @@ (module (type $i32_=>_none (func (param i32))) - (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_=>_none (func (param i32 i32 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))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -42,15 +42,6 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -100,26 +91,6 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) (func $~lib/rt/itcms/Object#unlink (param $0 i32) (local $1 i32) local.get $0 @@ -164,31 +135,17 @@ i32.store offset=8 local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 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 $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -213,15 +170,14 @@ global.get $~lib/rt/itcms/toSpace local.set $2 local.get $0 - local.tee $1 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.const 1568 i32.load i32.gt_u @@ -233,7 +189,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1572 @@ -248,11 +204,29 @@ else i32.const 2 end - local.set $0 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $2 local.get $0 - call $~lib/rt/itcms/Object#linkTo + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -559,12 +533,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -918,7 +892,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -981,7 +960,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1061,7 +1045,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17980 i32.ge_u if @@ -1071,19 +1055,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1100,11 +1084,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1114,10 +1101,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1138,28 +1127,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1256,11 +1245,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1271,50 +1329,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1322,18 +1384,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1341,18 +1403,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1364,7 +1426,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1377,12 +1439,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1396,54 +1458,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1453,125 +1515,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1579,7 +1680,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1612,105 +1713,12 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) + (local $2 i32) + (local $3 i32) local.get $0 if local.get $0 @@ -1732,14 +1740,35 @@ end local.get $1 call $~lib/rt/itcms/Object#unlink - local.get $1 global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 i32.const 3 - call $~lib/rt/itcms/Object#linkTo + 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 end local.get $0 ) (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -1771,10 +1800,29 @@ else local.get $0 call $~lib/rt/itcms/Object#unlink - local.get $0 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 end ) (func $~lib/rt/itcms/__collect @@ -1847,14 +1895,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) ) diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.optimized.wat index 8b2b140510..35c14f352e 100644 --- a/tests/compiler/empty-new.optimized.wat +++ b/tests/compiler/empty-new.optimized.wat @@ -1,11 +1,11 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param 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))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -31,15 +31,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -85,170 +76,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17852 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17852 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -536,12 +511,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -895,7 +870,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -958,7 +938,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1038,7 +1023,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17852 i32.ge_u if @@ -1048,19 +1033,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1077,11 +1062,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1091,10 +1079,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1161,23 +1151,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $1 i32.load offset=1568 i32.ne i32.shl @@ -1187,18 +1229,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1206,17 +1248,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1227,7 +1269,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1241,10 +1283,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1255,14 +1297,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1272,26 +1314,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1301,7 +1343,44 @@ i32.and i32.store end + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1330,7 +1409,6 @@ unreachable ) (func $~start - (local $0 i32) memory.size i32.const 16 i32.shl @@ -1339,84 +1417,30 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + call $~lib/rt/itcms/__new ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 4c7ecc8a1f..7ca17259e1 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -1,11 +1,11 @@ (module (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_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 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))) (memory $0 1) @@ -85,15 +85,6 @@ (func $exports/Car.getNumTires (result i32) i32.const 4 ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -139,170 +130,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17868 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17868 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -590,12 +565,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -949,7 +924,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1012,7 +992,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1092,7 +1077,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17868 i32.ge_u if @@ -1102,19 +1087,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1131,11 +1116,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1145,10 +1133,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1215,44 +1205,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + 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.const 65563 + i32.add + i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1260,15 +1302,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1295,22 +1337,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1319,32 +1361,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1356,70 +1398,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 4 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1520,17 +1526,37 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) - (func $~stack_check + (func $export:exports/Car#get:doors (param $0 i32) (result i32) + (local $1 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 1484 i32.lt_s @@ -1542,36 +1568,42 @@ call $~lib/builtins/abort unreachable end - ) - (func $export:exports/Car#get:doors (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store local.get $0 i32.load - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) (func $export:exports/Car#set:doors (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store local.get $0 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1581,64 +1613,91 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable end - unreachable + i32.const 2 + local.set $1 end - i32.const 2 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 i32.store + local.get $0 + local.get $1 + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:exports/Car#openDoors (param $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1648,52 +1707,67 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable end - unreachable + i32.const 2 + local.set $1 end - i32.const 2 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 i32.store + local.get $0 + local.get $1 + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index 519291f42c..09d97ed6f1 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -1,12 +1,12 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_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 $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -68,15 +68,6 @@ local.get $1 i32.mul ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -140,170 +131,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17956 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17956 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1168 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1536 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -591,12 +566,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -950,7 +925,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1013,7 +993,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1093,7 +1078,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17956 i32.ge_u if @@ -1103,19 +1088,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1132,11 +1117,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1146,10 +1134,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1216,44 +1206,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 4 + memory.size + local.tee $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $1 + i32.load offset=1568 + i32.ne + i32.shl i32.const 65563 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1261,17 +1303,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1282,7 +1324,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1296,10 +1338,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1310,14 +1352,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1327,26 +1369,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1356,71 +1398,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 + local.get $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 4 i32.store offset=16 - local.get $0 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $0 i32.load @@ -1492,103 +1498,141 @@ ) (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 1216 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1248 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1392 - call $~lib/rt/itcms/initLazy - 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 + 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 + 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.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 + end + i32.const 17984 + i32.const 18032 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 + ) + (func $exports/Car#constructor (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - ) - (func $~stack_check global.get $~lib/memory/__stack_pointer i32.const 1572 i32.lt_s @@ -1600,18 +1644,11 @@ call $~lib/builtins/abort unreachable end - ) - (func $exports/Car#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/rt/itcms/__new local.tee $0 i32.store diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 71e9b4d692..ce0d8601fc 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1,12 +1,11 @@ (module + (type $i32_=>_none (func (param 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_=>_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 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -44,15 +43,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18156)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -104,49 +94,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -171,7 +122,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -194,7 +145,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -204,15 +155,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -248,7 +204,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -555,12 +533,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -914,7 +892,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -977,7 +960,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1057,7 +1045,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18156 i32.ge_u if @@ -1067,19 +1055,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1096,11 +1084,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1110,10 +1101,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1134,28 +1127,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1252,268 +1245,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1216 - i32.const 1552 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1611,6 +1405,10 @@ ) (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 @@ -1628,12 +1426,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1649,13 +1447,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1669,62 +1468,275 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) - (local $4 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz + local.get $6 + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1280 - i32.const 294 - i32.const 14 + i32.const 1216 + i32.const 1552 + i32.const 458 + i32.const 30 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $1 + 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 $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/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1280 + 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 $1 @@ -1741,8 +1753,6 @@ i32.const 3 i32.and local.tee $3 - local.set $4 - local.get $3 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1760,7 +1770,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1771,178 +1781,1070 @@ end end ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select 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.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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + 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 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + ) + (func $~lib/array/Array#push (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + i32.const 1180 + i32.load + local.tee $11 + i32.const 1 + i32.add + local.tee $7 + local.set $2 + local.get $7 + i32.const 1176 + i32.load + local.tee $8 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 14 + 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 $2 + i32.const 2 + i32.shl + local.tee $10 + local.tee $4 + local.get $9 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $4 + i32.store offset=16 + local.get $1 + local.set $5 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $4 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $5 + local.set $2 + local.get $4 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $6 + block $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $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 $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $3 + 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 + if + local.get $2 + local.tee $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $3 + 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 $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 $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 + end + end + end + local.get $5 + local.get $8 + i32.add + local.get $10 + local.get $8 + 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 $10 + i32.store + end + i32.const 1172 + i32.load + local.get $11 + 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 $7 + i32.store ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2017,233 +2919,136 @@ end ) (func $~start - call $start:extends-baseaggregate - ) - (func $~stack_check - 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 - ) - (func $start:extends-baseaggregate (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 18156 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1328 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1360 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1504 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 18156 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/pinSpace + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/toSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 1168 + i32.store + local.get $0 i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + 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 20 + i32.const 6 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - end - local.get $2 - f64.const 0 - f64.store - local.get $2 - f64.const 0 - f64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - 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 $2 - i32.store offset=4 - i32.const 1180 - i32.load - local.tee $9 - i32.const 1 - i32.add - local.tee $5 - local.set $1 - local.get $5 - i32.const 1176 - i32.load - local.tee $6 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435455 - i32.gt_u + 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 1772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - i32.const 1616 - i32.const 1664 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.load - local.tee $7 - local.set $0 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $1 - i32.const 2 - i32.shl - local.tee $8 - local.tee $3 - local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 20 - i32.sub - local.tee $4 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $4 - local.get $3 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $3 - local.get $4 - i32.load offset=12 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 - local.get $0 - local.get $3 - local.get $4 - i32.load offset=16 local.tee $0 - local.get $0 - local.get $3 - i32.gt_u - select - call $~lib/memory/memory.copy - local.get $1 - local.set $0 + i32.store end local.get $0 - local.get $6 + f64.const 0 + f64.store + local.get $0 + f64.const 0 + f64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $8 - local.get $6 - i32.sub - call $~lib/memory/memory.fill + global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 - local.get $7 - i32.ne - if - i32.const 1168 - local.get $0 - i32.store - i32.const 1172 - local.get $0 - i32.store - i32.const 1168 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - end - i32.const 1176 - local.get $8 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 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 1172 - i32.load - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1168 - local.get $2 + i32.const 18176 + i32.const 18224 i32.const 1 - call $~lib/rt/itcms/__link - i32.const 1180 - local.get $5 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index 78aa7e5bc7..1852ca0621 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -38,15 +38,6 @@ (export "Child#set:child" (func $export:extends-recursive/Parent#set:child)) (export "Child#constructor" (func $export:extends-recursive/Child#constructor)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -92,49 +83,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -159,7 +111,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -182,7 +134,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -192,15 +144,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -236,7 +193,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -543,12 +522,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -902,7 +881,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -965,7 +949,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1045,7 +1034,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17868 i32.ge_u if @@ -1055,19 +1044,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1084,11 +1073,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1090,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1168,23 +1162,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 + (local $4 i32) + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1194,18 +1240,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1213,15 +1259,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1248,22 +1294,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1272,32 +1318,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1309,70 +1355,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 4 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1406,7 +1416,6 @@ local.get $0 ) (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) - (local $2 i32) local.get $0 local.get $1 i32.store @@ -1439,8 +1448,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1452,7 +1459,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1508,17 +1515,37 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) - (func $~stack_check + (func $export:extends-recursive/Parent#get:child (param $0 i32) (result i32) + (local $1 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 1484 i32.lt_s @@ -1530,33 +1557,39 @@ call $~lib/builtins/abort unreachable end - ) - (func $export:extends-recursive/Parent#get:child (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store local.get $0 i32.load - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) (func $export:extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 local.get $0 @@ -1573,62 +1606,82 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + 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 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $extends-recursive/Parent#set:child global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - i32.const 0 - call $extends-recursive/Parent#set:child - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.optimized.wat index 793f8f4a35..5a4f09c0bd 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.optimized.wat @@ -31,7 +31,13 @@ (func $features/reference-types/someFunc nop ) - (func $start:features/reference-types + (func $features/reference-types/internal (param $0 externref) (result externref) + local.get $0 + call $features/reference-types/external + call $features/reference-types/external + call $features/reference-types/external + ) + (func $~start global.get $features/reference-types/someObject global.get $features/reference-types/someKey call $~lib/bindings/Reflect/has @@ -150,13 +156,4 @@ global.get $features/reference-types/funcGlobal global.set $features/reference-types/anyGlobal ) - (func $features/reference-types/internal (param $0 externref) (result externref) - local.get $0 - call $features/reference-types/external - call $features/reference-types/external - call $features/reference-types/external - ) - (func $~start - call $start:features/reference-types - ) ) diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 9a1ae55a67..dae7f76ac7 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -5,7 +5,6 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -298,12 +297,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -623,28 +622,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -757,23 +756,43 @@ unreachable end local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub + local.tee $2 local.get $1 i32.const 12 i32.le_u - select - local.tee $2 + 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 @@ -781,25 +800,10 @@ i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -826,7 +830,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -834,8 +838,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -848,7 +852,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -862,13 +866,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.set $3 - local.get $2 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -884,33 +888,33 @@ local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -940,18 +944,6 @@ end local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - 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 - i32.const 4 - i32.add - ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) @@ -997,26 +989,45 @@ unreachable end local.get $1 - local.get $1 + local.tee $0 i32.load i32.const 1 i32.or - i32.store + local.set $1 + local.get $0 local.get $1 + i32.store + local.get $0 call $~lib/rt/tlsf/insertBlock ) - (func $features/simd/test_v128 + (func $start:features/simd (local $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 64 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 local.get $0 v128.load offset=16 v128.store offset=32 local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store8 @@ -1036,8 +1047,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store16 @@ -1057,8 +1076,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store @@ -1078,8 +1105,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i64.const 42 i64.store @@ -1099,12 +1134,16 @@ end local.get $0 call $~lib/rt/tlsf/__free - ) - (func $~start - (local $0 i32) - call $features/simd/test_v128 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 1 i32.store8 @@ -1159,8 +1198,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 1 i32.store16 @@ -1210,4 +1257,7 @@ call $~lib/builtins/abort unreachable ) + (func $~start + call $start:features/simd + ) ) diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 1b8f48cf39..7725eb9057 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -1,9 +1,9 @@ (module - (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_=>_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_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -54,15 +54,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18380)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -110,49 +101,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -177,7 +129,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -200,7 +152,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -210,15 +162,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -254,7 +211,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -561,12 +540,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -920,7 +899,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -983,7 +967,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1063,7 +1052,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18380 i32.ge_u if @@ -1073,19 +1062,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1102,11 +1091,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1116,10 +1108,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1140,28 +1134,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1258,268 +1252,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1617,6 +1412,10 @@ ) (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 @@ -1634,12 +1433,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1655,13 +1454,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1675,63 +1475,276 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) - (local $2 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz + local.get $6 + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 30 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub + 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 $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/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + 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 $1 i32.load offset=4 i32.const 3 @@ -1745,8 +1758,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1758,7 +1769,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1769,22 +1780,6 @@ end end ) - (func $field-initialization/Ref_Init#set:a (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) - (func $field-initialization/SomeObject#set:b (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1811,7 +1806,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -1825,36 +1820,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -1867,33 +1867,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -1901,14 +1901,6 @@ end i32.eqz ) - (func $field-initialization/SomeOtherObject#set:c (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) block $folding-inner1 @@ -1990,19 +1982,6 @@ (func $~start call $start:field-initialization ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1996 - i32.lt_s - if - i32.const 18400 - i32.const 18448 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $start:field-initialization (local $0 i32) (local $1 i32) @@ -2011,1024 +1990,1241 @@ i32.const 40 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 - memory.size - i32.const 16 - i32.shl - i32.const 18380 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1168 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - if - i32.const 0 - i32.const 1456 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1996 + 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 + i64.const 0 + i64.store offset=24 + local.get $0 + i64.const 0 + i64.store offset=32 + memory.size i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.eqz - if + i32.shl + i32.const 18380 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1996 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1456 - i32.const 24 + i32.store + local.get $1 + i32.const 4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.store + local.get $1 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1456 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - if + i32.store + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + 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 + local.get $0 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + 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 + local.get $0 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + 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 + local.get $0 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + 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 + local.get $0 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + 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 + local.get $0 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.store + 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 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.store + 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 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + 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 + local.get $0 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - if + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if + call $~lib/rt/itcms/__link + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + 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 + local.get $0 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 94 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + 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 1996 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1456 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if + i32.store + local.get $0 + i32.const 4 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + 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=4 + local.get $1 + local.get $0 + i32.load + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1456 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.eqz - if + i32.store + local.get $0 + i32.const 4 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + 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.load + if + i32.const 0 + i32.const 1456 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + 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.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + 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.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1456 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $field-initialization/Ref_Init#set:a - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.eqz - if + i32.store + local.get $0 + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 94 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $1 - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - i32.load - i32.ne - if + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - if + call $~lib/rt/itcms/__link + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + 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.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1456 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - i32.eqz - if + i32.store + local.get $0 + i32.const 4 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $field-initialization/Inherit_Base#constructor + local.tee $0 + i32.store + 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.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1456 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $field-initialization/Ref_Init#set:a - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - i32.eqz - if + i32.store + local.get $0 + i32.const 4 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $field-initialization/Inherit_Base#constructor + local.tee $0 + i32.store + 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.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1456 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 17 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $field-initialization/Inherit_Base#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - i32.eqz - if + call $field-initialization/SomeObject#constructor + local.tee $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1456 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 19 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $field-initialization/Inherit_Base#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - i32.eqz - if + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $field-initialization/SomeObject#set:b - local.get $0 - i32.store - local.get $0 - i32.load - if + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1456 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 164 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 - i32.const 1456 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.store offset=12 - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.const 0 - call $field-initialization/SomeObject#set:b - local.get $0 - i32.store offset=16 - local.get $0 - i32.load - i32.const 1 - i32.ne - if + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1456 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if + call $field-initialization/SomeObject#constructor + local.tee $0 + i32.store offset=12 + local.get $0 + i32.const 1 + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.store offset=20 - local.get $0 - i32.const 1648 - call $field-initialization/SomeObject#set:b - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.store offset=24 - local.get $0 - i32.load - if + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1456 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=28 - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=16 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $0 + i32.store offset=20 + local.get $0 + i32.const 1648 + i32.store offset=4 + local.get $0 + i32.const 1648 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.store offset=24 + local.get $0 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 170 + 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 $0 + i32.store offset=8 + local.get $1 + i32.const 1648 + i32.store offset=28 + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1456 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.store offset=32 - local.get $0 - i32.const 2 - i32.store - local.get $0 - i32.const 1680 - call $field-initialization/SomeObject#set:b - local.get $0 - i32.store offset=36 - local.get $0 - i32.load - i32.const 2 - i32.ne - if + call $field-initialization/SomeObject#constructor + local.tee $0 + i32.store offset=32 + local.get $0 + i32.const 2 + i32.store + local.get $0 + i32.const 1680 + i32.store offset=4 + local.get $0 + i32.const 1680 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=36 + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 173 + 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 $0 + i32.store offset=8 + local.get $1 + i32.const 1680 + i32.store offset=28 + local.get $0 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 174 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + call $field-initialization/SomeOtherObject#constructor + local.tee $0 + i32.store offset=36 + local.get $0 + i32.const 1712 + i32.store offset=8 + local.get $0 + i32.const 1712 + call $~lib/rt/itcms/__link + local.get $0 i32.const 0 - i32.const 1456 - i32.const 173 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1680 - i32.store offset=28 - local.get $0 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 174 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - call $field-initialization/SomeOtherObject#constructor - local.tee $0 - i32.store offset=36 - local.get $0 - i32.const 1712 - call $field-initialization/SomeOtherObject#set:c - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $field-initialization/SomeObject#set:b - local.get $0 - i32.store offset=24 - local.get $0 - i32.load - if + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1456 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store offset=8 - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=24 + local.get $0 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store offset=8 + local.get $1 i32.const 0 - i32.const 1456 - i32.const 183 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 183 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $0 + i32.store offset=8 + local.get $1 + i32.const 1712 + i32.store offset=28 + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + call $field-initialization/SomeOtherObject#constructor + local.tee $0 + i32.store offset=16 + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=28 - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 184 + i32.store + local.get $0 + i32.const 1744 + i32.store offset=4 + local.get $0 + i32.const 1744 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 1776 + i32.store offset=8 + local.get $0 + i32.const 1776 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - call $field-initialization/SomeOtherObject#constructor - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 3 - i32.store - local.get $0 - i32.const 1744 - call $field-initialization/SomeObject#set:b - local.get $0 - i32.const 1776 - call $field-initialization/SomeOtherObject#set:c - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 3 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 186 + 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 offset=8 + local.get $1 + i32.const 1744 + i32.store offset=28 + local.get $2 + i32.const 1744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load offset=8 + local.tee $0 + i32.store offset=8 + local.get $1 + i32.const 1776 + i32.store offset=28 + local.get $0 + i32.const 1776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 188 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1996 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1456 - i32.const 186 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1744 - i32.store offset=28 - local.get $1 - i32.const 1744 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $0 + i32.const 4 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 187 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1776 - i32.store offset=28 - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $0 i32.const 0 - i32.const 1456 - i32.const 188 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__link + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + 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 + local.get $0 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 205 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=24 + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=24 + local.get $0 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 218 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer + i32.const 18400 + i32.const 18448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $field-initialization/Ref_Init#set:a - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 205 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 23 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=24 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - local.get $0 - i32.store offset=24 - local.get $0 - i32.load - i32.eqz + i32.const 1996 + i32.lt_s if - i32.const 0 - i32.const 1456 - i32.const 218 - i32.const 3 + i32.const 18400 + i32.const 18448 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 24 - call $~lib/rt/itcms/__new local.tee $0 - i32.store - local.get $0 i32.const 0 - call $field-initialization/Ref_Init#set:a - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a - local.get $0 i32.store local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 40 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 0 call $~lib/rt/itcms/__new @@ -3044,11 +3240,22 @@ local.get $0 ) (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1996 + i32.lt_s + if + i32.const 18400 + i32.const 18448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3064,7 +3271,11 @@ end local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor - call $field-initialization/Ref_Init#set:a + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3076,7 +3287,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1996 + i32.lt_s + if + i32.const 18400 + i32.const 18448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3095,7 +3316,10 @@ i32.store local.get $0 i32.const 0 - call $field-initialization/SomeObject#set:b + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3108,11 +3332,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1996 + i32.lt_s + if + i32.const 18400 + i32.const 18448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12 i32.const 21 call $~lib/rt/itcms/__new @@ -3125,7 +3360,10 @@ i32.store local.get $0 i32.const 0 - call $field-initialization/SomeOtherObject#set:c + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index 20d1e37b15..b7e3cc349b 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result 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_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -35,15 +35,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17892)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -89,170 +80,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17892 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17892 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1152 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1472 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -540,12 +515,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -899,7 +874,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -962,7 +942,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1042,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17892 i32.ge_u if @@ -1052,19 +1037,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1081,11 +1066,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1083,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1165,25 +1155,77 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 4 + memory.size + local.tee $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $1 + i32.load offset=1568 + i32.ne i32.shl i32.const 65563 i32.add @@ -1191,18 +1233,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1210,17 +1252,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1231,7 +1273,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1245,10 +1287,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1259,14 +1301,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1276,26 +1318,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1305,7 +1347,47 @@ i32.and i32.store end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) (func $start:for (local $0 i32) @@ -1555,14 +1637,29 @@ 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 local.set $1 @@ -1570,156 +1667,173 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $for/Ref#constructor - local.tee $0 - i32.store - loop $for-loop|07 - local.get $0 - if - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 10 - i32.eq - if - i32.const 0 - local.set $0 - else - global.get $~lib/memory/__stack_pointer - call $for/Ref#constructor - local.tee $0 - i32.store - end - br $for-loop|07 - end - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 137 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1056 - i32.const 138 - 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 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $for/Ref#constructor - i32.store - global.get $~lib/memory/__stack_pointer - call $for/Ref#constructor - local.tee $1 - i32.store - loop $for-loop|08 + i32.store + local.get $0 call $for/Ref#constructor - if - block $for-break0 - local.get $0 + local.tee $0 + i32.store + loop $for-loop|07 + local.get $0 + if + local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 10 i32.eq if i32.const 0 - local.set $1 - br $for-break0 + local.set $0 + else + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $0 + i32.store end - global.get $~lib/memory/__stack_pointer - call $for/Ref#constructor - local.tee $1 - i32.store - br $for-loop|08 + br $for-loop|07 end end - end - local.get $0 - i32.const 10 - i32.ne - if + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 138 + 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 i32.const 0 - i32.const 1056 - i32.const 157 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - if + 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 1508 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1056 - i32.const 158 - 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/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state + i32.store + local.get $1 + call $for/Ref#constructor + i32.store + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $1 + i32.store + loop $for-loop|08 + call $for/Ref#constructor if - call $~lib/rt/itcms/step - drop - br $while-continue|0 + block $for-break09 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $1 + br $for-break09 + end + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $1 + i32.store + br $for-loop|08 + end end end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + if + i32.const 0 + i32.const 1056 + i32.const 158 + 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/rt/itcms/state + i32.const 0 + i32.gt_s if - call $~lib/rt/itcms/step - drop - br $while-continue|1 + 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 + return 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 + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1753,7 +1867,12 @@ (func $~start call $start:for ) - (func $~stack_check + (func $for/Ref#constructor (result i32) + (local $0 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 1508 i32.lt_s @@ -1765,92 +1884,12 @@ call $~lib/builtins/abort unreachable end - ) - (func $for/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 3 - i32.store offset=12 - local.get $0 i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + i32.store local.get $0 - i32.const 20 - i32.add + call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index ee42b6a0ae..4191c00fbe 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -1,13 +1,13 @@ (module (type $none_=>_none (func)) - (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 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (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_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -67,15 +67,6 @@ (func $start:function-call~fn2|4 (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -127,170 +118,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18220 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18220 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1344 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1760 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1764 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1760 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1764 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -578,12 +553,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -937,7 +912,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1000,7 +980,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1080,7 +1065,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18220 i32.ge_u if @@ -1090,19 +1075,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1119,11 +1104,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1121,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1203,44 +1193,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 4 + memory.size + local.tee $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $1 + i32.load offset=1568 + i32.ne + i32.shl i32.const 65563 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1248,17 +1290,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1269,7 +1311,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1283,10 +1325,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1297,14 +1339,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1314,26 +1356,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1343,7 +1385,47 @@ i32.and i32.store end + local.get $0 + i32.const 6 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) (func $function-call/Foo#fnVoid (param $0 i32) nop @@ -1388,234 +1470,176 @@ call $~lib/rt/itcms/__visit ) (func $~start - call $start:function-call - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1836 - i32.lt_s - if - i32.const 18240 - i32.const 18288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:function-call (local $0 i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1056 - i32.load - call_indirect $0 (type $none_=>_none) - i32.const 1088 - i32.load - call_indirect $0 (type $none_=>_none) - i32.const 1 - i32.const 2 - i32.const 1120 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 3 - i32.ne - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1152 - i32.const 10 + i32.store + i32.const 1056 + i32.load + call_indirect $0 (type $none_=>_none) + i32.const 1088 + i32.load + call_indirect $0 (type $none_=>_none) i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 3 - i32.const 1216 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 15 + i32.const 2 + i32.const 1120 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 3 + i32.const 1216 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1248 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 20 + i32.const 1248 + i32.load + call_indirect $0 (type $i32_=>_i32) i32.const 1 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 18220 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1424 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1568 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - i32.const 6 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $function-call/foo - global.get $~lib/memory/__stack_pointer - global.get $function-call/foo - local.tee $0 - i32.store - local.get $0 - i32.const 1680 - i32.load - call_indirect $0 (type $i32_=>_none) - i32.const 1 - i32.const 1712 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 33 + memory.size + i32.const 16 + i32.shl + i32.const 18220 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $function-call/foo - local.tee $0 - i32.store - local.get $0 - i32.const 1 - i32.const 2 - i32.const 1744 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.const 3 - i32.ne - if + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + 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 1836 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1152 - i32.const 34 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $function-call/foo + global.get $~lib/memory/__stack_pointer + global.get $function-call/foo + local.tee $0 + i32.store + local.get $0 + i32.const 1680 + i32.load + call_indirect $0 (type $i32_=>_none) i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1712 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $function-call/foo + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.const 2 + i32.const 1744 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 34 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index c9b4308cbb..94e7141992 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (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_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_i64 (func (param i64) (result i64))) @@ -102,15 +102,6 @@ i32.const 24 i32.add ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -156,49 +147,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -223,7 +175,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -246,7 +198,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -256,15 +208,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -300,7 +257,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -607,12 +586,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -966,7 +945,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1029,7 +1013,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1109,7 +1098,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18580 i32.ge_u if @@ -1119,19 +1108,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1148,11 +1137,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1162,10 +1154,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1232,23 +1226,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $1 i32.load offset=1568 i32.ne i32.shl @@ -1258,18 +1304,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1277,17 +1323,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1298,7 +1344,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1312,10 +1358,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1326,14 +1372,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1343,26 +1389,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1372,71 +1418,35 @@ i32.and i32.store end + local.get $0 + i32.const 8 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - i32.const 8 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $0 i32.load @@ -1473,18 +1483,30 @@ local.get $0 ) (func $function-expression/semanticallyAnonymous + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + if + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2064 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1523,422 +1545,485 @@ (func $~start call $start:function-expression ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - if - i32.const 18608 - i32.const 18656 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $start:function-expression (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - i32.const 1056 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 1152 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 2 - i32.ne - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1088 - i32.const 9 + i32.store i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1184 - i32.load - call_indirect $0 (type $none_=>_none) - i32.const 1216 - i32.load - call_indirect $0 (type $none_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 16 + i32.const 1056 + i32.load + call_indirect $0 (type $i32_=>_i32) i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - i32.const 1 - i32.const 2 - i32.const 1248 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 21 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1152 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1184 + i32.load + call_indirect $0 (type $none_=>_none) + i32.const 1216 + i32.load + call_indirect $0 (type $none_=>_i32) i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1280 - i32.store - i32.const 1 - i32.const 2 - i32.const 1280 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 22 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1312 - i32.store - i32.const 1 - i32.const 2 - i32.const 1312 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 23 + i32.const 2 + i32.const 1248 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 1344 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 34 + i32.const 2 + i32.const 1280 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 1376 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 35 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.store i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 1408 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 36 + i32.const 2 + i32.const 1312 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1504 - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $0 - i32.store - i32.const 1 - local.get $0 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 25 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 57 + i32.const 2 + i32.const 1344 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1568 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1568 - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $0 - i32.store offset=4 - i32.const 1 - local.get $0 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 25 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 68 - 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 - memory.size - i32.const 16 - i32.shl - i32.const 18580 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1712 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1744 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1888 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 2032 - i32.store - local.get $0 - i32.eqz - if + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 1376 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 1408 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1664 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - i32.const 2016 - i32.load - i32.const 3 - i32.and - i32.eq - if + i32.store local.get $0 - i32.const 20 + i32.const 1504 + i32.load + call_indirect $0 (type $none_=>_i32) + local.tee $0 + i32.store + i32.const 1 + local.get $0 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 57 + 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 - i32.load offset=4 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + 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 1568 + i32.store + local.get $0 + i32.const 1568 + i32.load + call_indirect $0 (type $none_=>_i32) + local.tee $0 + i32.store offset=4 + i32.const 1 + local.get $0 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 68 + 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 + memory.size + i32.const 16 + i32.shl + i32.const 18580 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1716 + i32.const 1712 + i32.store + i32.const 1720 + i32.const 1712 + i32.store + i32.const 1712 + global.set $~lib/rt/itcms/pinSpace + i32.const 1748 + i32.const 1744 + i32.store + i32.const 1752 + i32.const 1744 + i32.store + i32.const 1744 + global.set $~lib/rt/itcms/toSpace + i32.const 1892 + i32.const 1888 + i32.store + i32.const 1896 + i32.const 1888 + i32.store + i32.const 1888 + 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 2196 + 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 2032 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2032 + i32.store + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + i32.const 2016 + i32.load i32.const 3 i32.and - local.tee $2 - local.set $3 - local.get $2 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq if - i32.const 2012 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq - select if i32.const 2012 call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + end end end + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + i32.load + call_indirect $0 (type $none_=>_i32) + local.tee $0 + i32.store offset=8 + i32.const 1 + local.get $0 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 82 + 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 + call $function-expression/semanticallyAnonymous + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $function-expression/testGlobal~anonymous|0 (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $0 - i32.store offset=8 - i32.const 1 - local.get $0 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 25 - i32.ne + i32.const 2196 + i32.lt_s if - i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 3 + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - call $function-expression/semanticallyAnonymous - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $function-expression/testGlobal~anonymous|0 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1472 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 1472 ) (func $function-expression/testLocal~anonymous|0 (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + if + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1536 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 1536 ) (func $function-expression/testField~anonymous|0 (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + if + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2000 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 72cb6c6da9..779b001c12 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -1,10 +1,9 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) + (type $none_=>_none (func)) (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))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -39,212 +38,214 @@ local.get $1 f64.add ) - (func $function-types/doAddWithFn (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - ) (func $~start - call $start:function-types - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1228 - i32.lt_s - if - i32.const 17632 - i32.const 17680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:function-types (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1056 - global.set $function-types/i32Adder - i32.const 2 - global.set $~argumentsLength - i32.const 1 - i32.const 2 - i32.const 1056 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - i64.const 10 - i64.const 20 - i32.const 1152 - i32.load - call_indirect $0 (type $i64_i64_=>_i64) - i64.const 30 - i64.ne - if - i32.const 0 - i32.const 1088 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - f64.const 1.5 - f64.const 2.5 - i32.const 1184 - i32.load - call_indirect $0 (type $f64_f64_=>_f64) - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $function-types/i32Adder - local.tee $0 - i32.store - i32.const 2 - i32.const 3 - local.get $0 - call $function-types/doAddWithFn - i32.const 5 - i32.ne - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1088 - i32.const 23 + i32.store + i32.const 1056 + global.set $function-types/i32Adder + i32.const 2 + global.set $~argumentsLength i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - i32.const 3 - i32.const 4 - i32.const 1056 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 7 - i32.ne - if + i32.const 2 + i32.const 1056 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + i64.const 10 + i64.const 20 + i32.const 1152 + i32.load + call_indirect $0 (type $i64_i64_=>_i64) + i64.const 30 + i64.ne + if + i32.const 0 + i32.const 1088 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + f64.const 1.5 + f64.const 2.5 + i32.const 1184 + i32.load + call_indirect $0 (type $f64_f64_=>_f64) + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $function-types/i32Adder + local.tee $0 + i32.store + i32.const 2 + global.set $~argumentsLength + i32.const 2 + i32.const 3 + local.get $0 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + i32.const 3 + i32.const 4 + i32.const 1056 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + i32.const 2 + global.set $~argumentsLength + i32.const 4 + i32.const 5 + i32.const 1216 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength i32.const 0 - i32.const 1088 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store - i32.const 4 - i32.const 5 - i32.const 1216 - call $function-types/doAddWithFn - i32.const 9 - i32.ne - if + 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 1228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1088 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable end + i32.const 1056 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + end + i32.const 2 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + local.get $0 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 1056 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store - end - i32.const 1 - i32.const 2 - local.get $0 - call $function-types/doAddWithFn - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 41 + i32.const 2 + global.set $~argumentsLength i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 2 + i32.const 1056 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 42 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store + i32.const 17632 + i32.const 17680 i32.const 1 - i32.const 2 - i32.const 1056 - call $function-types/doAddWithFn - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 42 - 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 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 71de45b04a..87a1992d46 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1,11 +1,11 @@ (module - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param 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 $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -38,15 +38,6 @@ (export "test" (func $getter-call/test)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -92,170 +83,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17900 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17900 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1472 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -543,12 +518,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -902,7 +877,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -965,7 +945,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1045,7 +1030,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17900 i32.ge_u if @@ -1055,19 +1040,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1084,11 +1069,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1086,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1168,44 +1158,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 4 + memory.size + local.tee $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $1 + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1213,17 +1255,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1234,7 +1276,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1248,10 +1290,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1262,14 +1304,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1279,26 +1321,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1308,7 +1350,47 @@ i32.and i32.store end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) (func $getter-call/C#get:x~anonymous|0 (result i32) i32.const 42 @@ -1357,138 +1439,84 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1516 - i32.lt_s - if - i32.const 17920 - i32.const 17968 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $getter-call/test (result i32) (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1516 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1516 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.store + i32.const 1456 + i32.load + call_indirect $0 (type $none_=>_i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 1456 - i32.load - call_indirect $0 (type $none_=>_i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index 9d323557f7..bff3089379 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -1,9 +1,9 @@ (module (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 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result 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_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -306,12 +306,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -632,18 +632,20 @@ call $~lib/builtins/abort unreachable end - i32.const 12 - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub local.get $0 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -656,28 +658,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -857,14 +859,31 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $2 - call $~lib/rt/tlsf/searchBlock local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $1 + end i32.const 4 memory.size - local.tee $1 + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -873,21 +892,6 @@ i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -896,9 +900,9 @@ i32.const 16 i32.shr_u local.set $3 - local.get $1 + local.get $2 local.get $3 - local.get $1 + local.get $2 local.get $3 i32.gt_s select @@ -915,7 +919,7 @@ end end local.get $0 - local.get $1 + local.get $2 i32.const 16 i32.shl memory.size @@ -923,9 +927,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $0 - local.get $2 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -937,11 +941,11 @@ end end local.get $2 - local.get $1 i32.load i32.const -4 i32.and - i32.gt_u + local.get $1 + i32.lt_u if i32.const 0 i32.const 1056 @@ -951,13 +955,13 @@ unreachable end local.get $0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $1 local.get $2 - call $~lib/rt/tlsf/prepareBlock local.get $1 + call $~lib/rt/tlsf/prepareBlock + local.get $2 ) (func $~lib/memory/heap.alloc (param $0 i32) (result i32) global.get $~lib/rt/tlsf/ROOT @@ -1004,133 +1008,923 @@ end local.get $1 ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 end - else + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 local.get $1 - i32.const 7 - i32.and + i32.load + i32.store local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + 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 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + local.get $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 $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 + i32.sub + local.get $7 + i32.sub + i32.const 0 + local.get $7 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $2 + local.get $5 + local.get $7 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $2 + local.get $5 + i32.lt_u + if + local.get $5 + 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 $4 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 + local.get $7 i32.const 1 i32.sub + local.set $7 + local.get $2 local.tee $4 - local.get $0 + i32.const 1 i32.add - local.get $1 + local.set $2 + local.get $5 + local.tee $3 + i32.const 1 + i32.add + local.set $5 local.get $4 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $7 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $5 + i64.load + i64.store + local.get $7 + i32.const 8 + i32.sub + local.set $7 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $7 + if + local.get $2 + local.tee $4 + i32.const 1 + i32.add + local.set $2 + local.get $5 + local.tee $3 + i32.const 1 + i32.add + local.set $5 + local.get $4 + local.get $3 + i32.load8_u + i32.store8 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $while-continue|2 + end + end + else + local.get $5 + 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 $7 + i32.add + i32.const 7 + i32.and + if + local.get $7 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.get $7 + i32.const 1 + i32.sub + local.tee $7 + i32.add + local.get $5 + local.get $7 i32.add i32.load8_u i32.store8 @@ -1138,18 +1932,18 @@ end end loop $while-continue|4 - local.get $4 + local.get $7 i32.const 8 i32.ge_u if - local.get $4 + local.get $2 + local.get $7 i32.const 8 i32.sub - local.tee $4 - local.get $0 + local.tee $7 i32.add - local.get $1 - local.get $4 + local.get $5 + local.get $7 i32.add i64.load i64.store @@ -1158,16 +1952,16 @@ end end loop $while-continue|5 - local.get $4 + local.get $7 if - local.get $4 + local.get $2 + local.get $7 i32.const 1 i32.sub - local.tee $4 - local.get $0 + local.tee $7 i32.add - local.get $1 - local.get $4 + local.get $5 + local.get $7 i32.add i32.load8_u i32.store8 @@ -1176,42 +1970,21 @@ end end end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (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 if + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store local.get $0 local.get $1 - call $~lib/rt/tlsf/freeBlock + call $~lib/rt/tlsf/insertBlock end - local.get $2 + local.get $6 ) (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1228,63 +2001,63 @@ local.get $0 i32.const 17660 i32.lt_u - if + if (result i32) 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 + block $__inlined_func$~lib/rt/tlsf/reallocateBlock (result i32) global.get $~lib/rt/tlsf/ROOT - local.set $2 + local.set $3 local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.set $0 + local.set $2 block $folding-inner0 local.get $1 + local.tee $0 call $~lib/rt/tlsf/prepareSize - local.tee $4 - local.get $0 - i32.load local.tee $5 + local.get $2 + i32.load + local.tee $6 i32.const -4 i32.and - local.tee $3 + local.tee $7 i32.le_u br_if $folding-inner0 - local.get $0 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $6 + local.tee $1 i32.load - local.tee $7 + local.tee $4 i32.const 1 i32.and if - local.get $4 - local.get $3 + local.get $5 + local.get $7 i32.const 4 i32.add - local.get $7 + local.get $4 i32.const -4 i32.and i32.add - local.tee $3 + local.tee $4 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 @@ -1292,24 +2065,24 @@ 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 $0 - local.get $4 + local.get $5 call $~lib/rt/tlsf/prepareBlock + local.get $2 end end - local.get $0 i32.const 4 i32.add ) (func $~lib/memory/heap.free (param $0 i32) + (local $1 i32) local.get $0 i32.const 17660 i32.ge_u @@ -1322,7 +2095,14 @@ global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + local.tee $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock end ) (func $~lib/memory/heap.reset @@ -1334,8 +2114,16 @@ unreachable ) (func $~start + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/memory/heap.alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add global.set $heap/ptr global.get $heap/ptr i32.const 32 diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 36e76ad769..caffaa49ad 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (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_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -44,15 +44,6 @@ (export "Managed#set:foo" (func $export:implicit-getter-setter/Managed#set:foo)) (export "Managed#constructor" (func $export:implicit-getter-setter/Managed#constructor)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -98,49 +89,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -165,7 +117,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -188,7 +140,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -198,15 +150,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -242,7 +199,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -549,12 +528,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -908,7 +887,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -971,7 +955,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1051,7 +1040,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17868 i32.ge_u if @@ -1061,19 +1050,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1090,11 +1079,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1096,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1174,23 +1168,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 + (local $4 i32) + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1200,18 +1246,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1219,15 +1265,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1254,22 +1300,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1278,32 +1324,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1315,70 +1361,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 4 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1412,7 +1422,6 @@ local.get $0 ) (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) - (local $2 i32) local.get $0 local.get $1 i32.store @@ -1445,8 +1454,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1458,7 +1465,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1507,17 +1514,37 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) - (func $~stack_check + (func $export:implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) + (local $1 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 1484 i32.lt_s @@ -1529,105 +1556,152 @@ call $~lib/builtins/abort unreachable end - ) - (func $export:implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store local.get $0 i32.load - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) (func $export:implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store local.get $0 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) (func $export:implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $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 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - local.get $1 - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store local.get $0 i32.load - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) (func $export:implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 local.get $0 @@ -1639,45 +1713,62 @@ global.set $~lib/memory/__stack_pointer ) (func $export:implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 + call $implicit-getter-setter/Managed#set:foo + 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.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - local.get $1 - call $implicit-getter-setter/Managed#set:foo - 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.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index cfff8e5413..be400ec8e3 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -1,12 +1,11 @@ (module (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_=>_i32 (func (param i32 i32) (result 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 $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result 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))) (memory $0 1) @@ -69,15 +68,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18596)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -125,49 +115,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -192,7 +143,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -215,7 +166,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -225,15 +176,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -269,7 +225,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -576,12 +554,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -935,7 +913,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -998,7 +981,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1078,7 +1066,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18596 i32.ge_u if @@ -1088,19 +1076,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1117,11 +1105,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1131,10 +1122,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1155,28 +1148,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1273,11 +1266,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1288,50 +1350,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 local.get $2 i32.const 536870910 i32.lt_u - select + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl i32.add i32.const 65535 i32.add @@ -1339,18 +1405,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1358,18 +1424,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1381,7 +1447,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1394,12 +1460,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1413,54 +1479,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1470,125 +1536,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1596,7 +1701,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1629,279 +1734,766 @@ end end end + local.get $2 ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 + (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 - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + local.get $0 + i32.const 3 + i32.and + i32.eqz if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 local.get $2 - call $~lib/rt/itcms/step + i32.const 16 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 + br $while-continue|1 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 i32.add - global.set $~lib/rt/itcms/threshold + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/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 $0 - local.get $1 - i32.lt_u + i32.const 4 + i32.and if + local.get $0 local.get $1 - i32.const 7 - i32.and + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 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 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 local.get $4 - i32.const 1 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 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 + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) local.get $1 i32.eqz if @@ -1935,8 +2527,6 @@ i32.const 3 i32.and local.tee $3 - local.set $4 - local.get $3 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1954,7 +2544,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1984,64 +2574,89 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 18596 - i32.sub + 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 2212 + i32.lt_s + if + i32.const 18624 + i32.const 18672 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1232 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1376 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 1056 - call $~lib/rt/__newArray - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 1536 - call $~lib/rt/__newArray - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 5 - i32.const 1584 - call $~lib/rt/__newArray - local.tee $0 - i32.store + 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 + memory.size + i32.const 16 + i32.shl + i32.const 18596 + 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 + local.get $0 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 1056 + call $~lib/rt/__newArray + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 + i32.const 4 + i32.const 1536 + call $~lib/rt/__newArray + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 5 + i32.const 1584 + call $~lib/rt/__newArray + local.tee $0 + i32.store + block $folding-inner0 local.get $0 - local.tee $1 i32.load offset=12 i32.const 1 i32.le_u br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 i32.load offset=4 i32.const -1 @@ -2070,12 +2685,11 @@ local.tee $0 i32.store local.get $0 - local.tee $1 i32.load offset=12 i32.const 1 i32.le_u br_if $folding-inner0 - local.get $1 + local.get $0 i32.load offset=4 f32.load offset=4 drop @@ -2088,7 +2702,7 @@ local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 2 i32.const 2 i32.const 8 @@ -2108,6 +2722,7 @@ i32.const 1 local.get $2 call $~lib/array/Array#__uset + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -2119,7 +2734,7 @@ local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 2 i32.const 2 i32.const 8 @@ -2139,6 +2754,7 @@ i32.const 1 local.get $2 call $~lib/array/Array#__uset + local.get $3 local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -2146,7 +2762,7 @@ local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 2 i32.const 2 i32.const 8 @@ -2166,6 +2782,7 @@ i32.const 1 i32.const 0 call $~lib/array/Array#__uset + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -2204,7 +2821,7 @@ call $~lib/rt/__newArray i32.store offset=8 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 2 i32.const 2 i32.const 11 @@ -2232,6 +2849,7 @@ i32.const 1968 call $~lib/rt/__newArray call $~lib/array/Array#__uset + local.get $1 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -2321,7 +2939,17 @@ (func $~start call $start:infer-array ) - (func $~stack_check + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + 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 2212 i32.lt_s @@ -2333,53 +2961,227 @@ call $~lib/builtins/abort unreachable end - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $8 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 local.get $1 i32.shl - local.tee $4 - local.set $5 - local.get $4 + local.tee $9 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.set $1 + local.set $7 local.get $3 if - local.get $1 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy + 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 end - local.get $1 - local.tee $3 + local.get $8 + local.get $7 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new local.tee $1 - local.get $3 + local.get $7 i32.store local.get $1 - local.get $3 + local.get $7 i32.const 0 call $~lib/rt/itcms/__link local.get $1 - local.get $3 + local.get $7 i32.store offset=4 local.get $1 - local.get $4 + local.get $9 i32.store offset=8 local.get $1 local.get $0 @@ -2396,11 +3198,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 2212 + i32.lt_s + if + i32.const 18624 + i32.const 18672 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.const 7 call $~lib/rt/itcms/__new diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index d174a8aafe..0906004a37 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 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 $f32_=>_f32 (func (param f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -58,15 +58,6 @@ local.get $0 select ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -114,170 +105,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1296 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18068 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18068 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1296 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1616 + i32.load + i32.gt_u + if + i32.const 1424 + i32.const 1488 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1620 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1616 - i32.load - i32.gt_u - if - i32.const 1424 - i32.const 1488 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1620 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -565,12 +540,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -924,7 +899,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -987,7 +967,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1067,7 +1052,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18068 i32.ge_u if @@ -1077,19 +1062,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1106,11 +1091,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1120,10 +1108,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1190,25 +1180,77 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 4 + memory.size + local.tee $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $1 + i32.load offset=1568 + i32.ne i32.shl i32.const 65563 i32.add @@ -1216,18 +1258,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1235,17 +1277,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1256,7 +1298,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1270,10 +1312,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1284,14 +1326,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1301,26 +1343,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1330,71 +1372,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 + local.get $0 i32.const 5 i32.store offset=12 local.get $0 i32.const 4 i32.store offset=16 - local.get $0 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $0 i32.load @@ -1479,106 +1485,147 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1152 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1200 - i32.store offset=4 - i32.const 1164 - i32.load - local.set $2 - loop $for-loop|0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store local.get $0 - local.get $2 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 1152 + i32.store + local.get $0 + i32.const 1200 + i32.store offset=4 + i32.const 0 + local.set $0 i32.const 1164 i32.load - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $1 - i32.const 1156 - i32.load - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load + local.set $1 + loop $for-loop|0 local.get $0 - i32.const 1152 - i32.const 1200 + local.get $1 + i32.const 1164 i32.load - call_indirect $0 (type $i32_f32_i32_i32_=>_i32) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_s + select + i32.lt_s + if + local.get $3 + i32.const 1156 + i32.load + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $0 + i32.const 1152 + i32.const 1200 + i32.load + call_indirect $0 (type $i32_f32_i32_i32_=>_i32) + local.set $3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end end + memory.size + i32.const 16 + i32.shl + i32.const 18068 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/pinSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/toSpace + i32.const 1524 + i32.const 1520 + i32.store + i32.const 1528 + i32.const 1520 + i32.store + i32.const 1520 + global.set $~lib/rt/itcms/fromSpace + 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 1684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + 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=8 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - memory.size - i32.const 16 - i32.shl - i32.const 18068 - i32.sub + i32.const 18096 + i32.const 18144 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1376 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1520 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:infer-generic/test2 (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~stack_check global.get $~lib/memory/__stack_pointer i32.const 1684 i32.lt_s @@ -1590,17 +1637,11 @@ call $~lib/builtins/abort unreachable end - ) - (func $export:infer-generic/test2 (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index c32bb3f224..7ef00a8661 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 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))) (memory $0 1) @@ -47,15 +47,6 @@ (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -101,170 +92,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1200 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17964 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17964 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1200 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1520 + i32.load + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1520 - i32.load - i32.gt_u - if - i32.const 1328 - i32.const 1392 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1524 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -552,12 +527,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -911,7 +886,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -974,7 +954,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1054,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17964 i32.ge_u if @@ -1064,19 +1049,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1093,11 +1078,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1107,10 +1095,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1131,28 +1121,28 @@ i32.shr_u local.set $1 else - i32.const 31 local.get $1 - i32.const 1 - i32.const 27 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 local.get $1 i32.clz i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1249,11 +1239,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1264,50 +1323,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1315,18 +1378,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1334,18 +1397,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1357,7 +1420,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1370,12 +1433,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1389,54 +1452,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1446,125 +1509,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1572,7 +1674,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1605,210 +1707,7 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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 $inlining/test_ctor - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - 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 $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 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1852,59 +1751,185 @@ unreachable ) (func $~start - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 - i32.const 123 - i32.store - global.get $~lib/memory/__stack_pointer - 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 1248 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1280 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1424 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $inlining/test_ctor - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1580 - i32.lt_s - if + (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 diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index 62850cd734..008c7e6699 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -1,12 +1,11 @@ (module (type $none_=>_none (func)) + (type $i32_=>_none (func (param 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_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))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -38,15 +37,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17948)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -104,170 +94,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17948 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17948 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1504 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -555,12 +529,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -914,7 +888,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -977,7 +956,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1057,7 +1041,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17948 i32.ge_u if @@ -1067,19 +1051,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1096,11 +1080,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1110,10 +1097,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1180,44 +1169,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + 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.const 65563 + i32.add + i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1225,15 +1266,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1260,22 +1301,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1284,32 +1325,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1321,70 +1362,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1400,6 +1405,7 @@ ) (func $start:instanceof-class (local $0 i32) + (local $1 i32) memory.size i32.const 16 i32.shl @@ -1408,161 +1414,223 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1352 + i32.const 1344 i32.store - global.get $~lib/memory/__stack_pointer + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1564 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new local.tee $0 + i32.const 0 i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $instanceof-class/a - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5 + local.get $0 + i32.const 3 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $instanceof-class/b - block $__inlined_func$instanceof-class/Child~instanceof (result i32) + 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 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - global.get $instanceof-class/b - local.tee $0 + i32.store + local.get $0 i32.eqz - br_if $__inlined_func$instanceof-class/Child~instanceof - drop - i32.const 1 + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.const 3 - call $~lib/rt/__instanceof - br_if $__inlined_func$instanceof-class/Child~instanceof - drop - i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 6 - call $~lib/rt/__instanceof - br_if $__inlined_func$instanceof-class/Child~instanceof - drop + global.set $instanceof-class/a + 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 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - end - i32.eqz - if + i32.store + local.get $0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + 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 1564 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1456 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=12 - local.tee $0 - i32.const 1504 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load offset=4 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new local.tee $0 - br_if $do-continue|0 + i32.store + end + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $instanceof-class/b + block $__inlined_func$instanceof-class/Child~instanceof (result i32) + i32.const 0 + global.get $instanceof-class/b + local.tee $1 + i32.eqz + br_if $__inlined_func$instanceof-class/Child~instanceof + drop + i32.const 1 + block $__inlined_func$~lib/rt/__instanceof (result i32) + local.get $1 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|0 + i32.const 1 + local.get $0 + i32.const 3 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|0 + end + end + i32.const 0 + end + br_if $__inlined_func$instanceof-class/Child~instanceof + drop + i32.const 1 + block $__inlined_func$~lib/rt/__instanceof6 (result i32) + local.get $1 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|07 + i32.const 1 + local.get $0 + i32.const 6 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof6 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|07 + end + end + i32.const 0 + end + br_if $__inlined_func$instanceof-class/Child~instanceof + drop + i32.const 0 end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + return end - i32.const 0 + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1605,17 +1673,4 @@ (func $~start call $start:instanceof-class ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1564 - i32.lt_s - if - i32.const 17968 - i32.const 18016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) ) diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index a4bdf5a994..aed3a64472 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -1,11 +1,11 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -38,15 +38,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18004)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -92,49 +83,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -159,7 +111,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -182,7 +134,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -192,15 +144,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -236,7 +193,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -543,12 +522,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -902,7 +881,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -965,7 +949,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1045,7 +1034,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18004 i32.ge_u if @@ -1055,19 +1044,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1084,11 +1073,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1090,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1168,23 +1162,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $1 i32.load offset=1568 i32.ne i32.shl @@ -1194,18 +1240,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1213,17 +1259,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1234,7 +1280,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1248,10 +1294,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1262,14 +1308,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1279,26 +1325,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1308,71 +1354,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 + local.get $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 4 i32.store offset=16 - local.get $0 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $0 i32.load @@ -1406,7 +1416,6 @@ local.get $0 ) (func $issues/1095/Foo#set:bar (param $0 i32) (param $1 i32) - (local $2 i32) local.get $0 local.get $1 i32.store @@ -1439,8 +1448,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1452,7 +1459,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1496,95 +1503,119 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 18004 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1168 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 1456 - call $issues/1095/Foo#set:bar - 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 $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 1488 - i32.const 1552 - i32.const 8 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $issues/1095/Foo#set:bar - 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.add - global.set $~lib/memory/__stack_pointer - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - if - i32.const 18032 - i32.const 18080 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 18004 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 1456 + call $issues/1095/Foo#set:bar + 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 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.eqz + if + i32.const 1488 + i32.const 1552 + i32.const 8 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $issues/1095/Foo#set:bar + 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.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 18032 + i32.const 18080 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index bdea2c460c..98a4bbe6f6 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1,11 +1,11 @@ (module + (type $none_=>_i32 (func (result 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 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -38,15 +38,6 @@ (export "viaThis" (func $issues/1225/viaThis)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -98,170 +89,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17908 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17908 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -549,12 +524,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -908,7 +883,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -971,7 +951,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1051,7 +1036,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17908 i32.ge_u if @@ -1061,19 +1046,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1090,11 +1075,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1092,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1174,44 +1164,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $2 local.get $1 + local.get $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1220,7 +1262,7 @@ end end local.get $0 - local.get $2 + local.get $1 i32.const 16 i32.shl memory.size @@ -1315,147 +1357,184 @@ i32.store end local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) - (local $1 i32) - (local $2 i32) + i32.const 3 + i32.store offset=12 + local.get $1 + i32.const 12 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + 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 $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.add + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=10 + local.get $0 + i32.const 0 + i32.store8 offset=9 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.and + local.tee $2 + i32.add + local.tee $1 + i32.const 0 + i32.store + i32.const 12 + local.get $2 + i32.sub + i32.const -4 + i32.and + local.tee $3 + local.get $1 + i32.add + i32.const 28 + i32.sub + local.tee $2 + i32.const 0 + i32.store offset=24 block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.add - i32.const 0 - i32.store8 offset=3 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $0 - i32.const 0 - i32.store8 offset=10 - local.get $0 - i32.const 0 - i32.store8 offset=9 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $0 - i32.const 0 - i32.store8 offset=8 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $1 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 12 - local.get $1 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=16 - local.get $1 + local.get $2 i32.const 0 i32.store offset=20 - local.get $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 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 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add - local.set $0 + local.set $1 + local.get $3 local.get $2 - local.get $1 i32.sub - local.set $1 + local.set $2 loop $while-continue|0 - local.get $1 + local.get $2 i32.const 32 i32.ge_u if - local.get $0 + local.get $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 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $2 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $2 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end + local.get $0 ) (func $issues/1225/normal (result i32) global.get $issues/1225/x @@ -1465,9 +1544,37 @@ global.get $issues/1225/x i32.load offset=4 ) - (func $start:issues/1225 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1225/X + 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 $issues/1225/X $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 + ) + (func $~start (local $0 i32) - (local $1 i32) memory.size i32.const 16 i32.shl @@ -1476,14 +1583,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1501,85 +1623,12 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 12 - i32.store offset=16 local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add + call $~lib/rt/itcms/__new local.tee $0 - call $~lib/memory/memory.fill - local.get $0 i32.store local.get $0 i32.const 0 @@ -1663,36 +1712,4 @@ i32.add global.set $~lib/rt/itcms/threshold ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/1225/X - 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 $issues/1225/X $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 - ) - (func $~start - call $start:issues/1225 - ) ) diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index 0f22d6a56c..e7f69eb0a1 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1,12 +1,11 @@ (module - (type $i32_i32_=>_none (func (param i32 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 $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))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -42,15 +41,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18140)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -100,49 +90,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -167,7 +118,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -190,7 +141,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -200,15 +151,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -244,7 +200,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -551,12 +529,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -910,7 +888,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -973,7 +956,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1053,7 +1041,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18140 i32.ge_u if @@ -1063,19 +1051,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1092,11 +1080,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1106,10 +1097,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1130,28 +1123,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1248,268 +1241,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1152 - i32.const 1488 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1607,6 +1401,10 @@ ) (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 @@ -1624,12 +1422,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1645,13 +1443,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1665,53 +1464,266 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) - (local $4 i32) - local.get $1 - i32.eqz + local.get $6 + i32.const 1073741820 + i32.ge_u if - return + i32.const 1152 + i32.const 1488 + i32.const 458 + i32.const 30 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.eqz - if + 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 $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/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if i32.const 0 i32.const 1216 i32.const 294 @@ -1737,8 +1749,6 @@ i32.const 3 i32.and local.tee $3 - local.set $4 - local.get $3 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1756,7 +1766,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1767,187 +1777,761 @@ end end ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select 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.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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1958,6 +2542,8 @@ (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 @@ -1977,17 +2563,17 @@ local.get $1 i32.const 1 i32.add - local.tee $7 - local.set $4 - local.get $7 + local.tee $11 + local.set $3 + local.get $11 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $10 i32.const 2 i32.shr_u i32.gt_u if - local.get $4 + local.get $3 i32.const 268435455 i32.gt_u if @@ -1998,20 +2584,19 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - local.tee $9 - local.set $3 block $__inlined_func$~lib/rt/itcms/__renew - local.get $4 + local.get $3 i32.const 2 i32.shl - local.tee $10 - local.tee $5 - local.get $9 + local.tee $9 + local.tee $4 + local.get $0 + i32.load + local.tee $8 + local.tee $3 i32.const 20 i32.sub - local.tee $6 + local.tee $5 i32.load i32.const -4 i32.and @@ -2019,38 +2604,223 @@ i32.sub i32.le_u if - local.get $6 local.get $5 + local.get $4 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end + local.get $4 local.get $5 - local.get $6 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $4 - local.get $3 + local.tee $7 + local.set $6 + local.get $4 local.get $5 - local.get $6 i32.load offset=16 - local.tee $3 - local.get $3 + local.tee $5 + local.get $4 local.get $5 - i32.gt_u + i32.lt_u select - call $~lib/memory/memory.copy - local.get $4 + 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 $4 + i32.const 1 + i32.add + local.set $6 + 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 $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 $4 + i32.const 1 + i32.add + local.set $6 + 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 $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 local.set $3 end local.get $3 - local.get $8 + local.get $10 i32.add + local.get $9 local.get $10 - local.get $8 i32.sub call $~lib/memory/memory.fill local.get $3 - local.get $9 + local.get $8 i32.ne if local.get $0 @@ -2065,11 +2835,11 @@ call $~lib/rt/itcms/__link end local.get $0 - local.get $10 + local.get $9 i32.store offset=8 end local.get $0 - local.get $7 + local.get $11 i32.store offset=12 end local.get $0 @@ -2117,61 +2887,255 @@ return end local.get $0 - i32.load offset=4 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 18140 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1756 + 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 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 0 + call $~lib/rt/itcms/__new local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 12 + call $~lib/memory/memory.fill local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 12 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - loop $while-continue|0 + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.store + call $issues/1699/MultiAssignmentTest#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 1 + local.get $1 + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + call $~lib/array/Array#__set + i32.const 0 + local.set $1 + loop $for-loop|0 local.get $1 - local.get $2 - i32.lt_u + 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 + i32.store offset=12 local.get $1 - i32.load - local.tee $3 + i32.const 1 + i32.gt_s if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__set end local.get $1 - i32.const 4 + i32.const 1 i32.add local.set $1 - br $while-continue|0 + br $for-loop|0 end end local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.const 0 + call $~lib/array/Array#__get + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + i32.const 1680 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.eq + if + i32.const 0 + i32.const 1680 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer return end + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 18140 + (func $issues/1699/MultiAssignmentTest#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1264 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1296 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1440 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $issues/1699/test - ) - (func $~stack_check + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1756 i32.lt_s @@ -2183,170 +3147,11 @@ call $~lib/builtins/abort unreachable end - ) - (func $issues/1699/test - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 12 - call $~lib/memory/memory.fill - local.get $0 - local.get $1 - call $~lib/array/Array#set:buffer - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 12 - i32.store offset=8 - local.get $0 - i32.const 3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 i32.store - call $issues/1699/MultiAssignmentTest#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 1 - local.get $1 - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - call $~lib/array/Array#__set - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - 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 - i32.store offset=12 - local.get $1 - i32.const 1 - i32.gt_s - if - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__set - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1680 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.eq - if - i32.const 0 - i32.const 1680 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $issues/1699/MultiAssignmentTest#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 3 call $~lib/rt/itcms/__new @@ -2366,7 +3171,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + if + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index c68cc29bc4..aa8e5cb81f 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result 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_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -35,15 +35,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -89,170 +80,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17908 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17908 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1168 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -540,12 +515,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -899,7 +874,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -962,7 +942,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1042,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17908 i32.ge_u if @@ -1052,19 +1037,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1081,11 +1066,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1083,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1165,23 +1155,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $1 i32.load offset=1568 i32.ne i32.shl @@ -1191,18 +1233,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1210,17 +1252,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1231,7 +1273,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1245,10 +1287,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1259,14 +1301,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1276,26 +1318,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1305,7 +1347,47 @@ i32.and i32.store end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1337,9 +1419,11 @@ unreachable ) (func $~start - call $start:logical - ) - (func $~stack_check + (local $0 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 1524 i32.lt_s @@ -1351,16 +1435,6 @@ call $~lib/builtins/abort unreachable end - ) - (func $start:logical - (local $0 i32) - (local $1 f32) - (local $2 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1372,14 +1446,29 @@ 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $logical/Obj#constructor local.set $0 @@ -1453,89 +1542,27 @@ ) (func $logical/Obj#constructor (result i32) (local $0 i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.const 1524 + i32.lt_s if - call $~lib/rt/tlsf/initialize + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock + global.get $~lib/memory/__stack_pointer local.tee $0 - i32.const 3 - i32.store offset=12 - local.get $0 i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + i32.store local.get $0 - i32.const 20 - i32.add + call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 7f011117f6..b64499205a 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 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 $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param 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))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -39,15 +39,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18060)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -93,170 +84,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18060 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18060 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1632 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1632 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1636 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -544,12 +519,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -903,7 +878,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -966,7 +946,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1046,7 +1031,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18060 i32.ge_u if @@ -1056,19 +1041,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1085,11 +1070,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1099,10 +1087,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1169,25 +1159,77 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + 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.const 65563 i32.add @@ -1195,18 +1237,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1214,15 +1256,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1249,22 +1291,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1273,32 +1315,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1310,70 +1352,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1387,36 +1393,6 @@ i32.const 20 i32.add ) - (func $~lib/rt/__instanceof (param $0 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=12 - local.tee $0 - i32.const 1632 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $0 - i32.const 3 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1636 - i32.add - i32.load offset=4 - local.tee $0 - br_if $do-continue|0 - end - end - i32.const 0 - ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $managed-cast/Animal @@ -1450,270 +1426,416 @@ unreachable ) (func $~start - call $start:managed-cast - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1676 - i32.lt_s - if - i32.const 18080 - i32.const 18128 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:managed-cast (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 18060 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1168 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $managed-cast/Cat#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - call $managed-cast/Cat#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - i32.const 1456 - i32.const 1520 - i32.const 14 - i32.const 12 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $managed-cast/Cat#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - call $managed-cast/Cat#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - call $managed-cast/Cat#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/__instanceof - i32.eqz - if - i32.const 1584 - i32.const 1520 - i32.const 31 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $managed-cast/Cat#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.eqz - if - i32.const 1456 - i32.const 1520 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/rt/__instanceof - i32.eqz - if - i32.const 1584 - i32.const 1520 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - call $managed-cast/Cat#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/rt/__instanceof - i32.eqz - if - i32.const 1584 - i32.const 1520 - i32.const 41 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $managed-cast/Cat#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/rt/__instanceof - i32.eqz - if - i32.const 1584 - i32.const 1520 - i32.const 47 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 18060 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1676 + 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 18060 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $managed-cast/Cat#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + call $managed-cast/Cat#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1676 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.eqz + if + i32.const 1456 + i32.const 1520 + i32.const 14 + i32.const 12 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + call $managed-cast/Cat#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + call $managed-cast/Cat#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1676 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/rt/__instanceof (result i32) + local.get $1 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1632 + i32.load + i32.le_u if - call $~lib/rt/itcms/step - drop - br $while-continue|0 + loop $do-continue|0 + i32.const 1 + local.get $0 + i32.const 3 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|0 + end end + i32.const 0 end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 + i32.eqz + if + i32.const 1584 + i32.const 1520 + i32.const 31 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1676 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $1 + i32.eqz + if + i32.const 1456 + i32.const 1520 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/rt/__instanceof11 (result i32) + local.get $1 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1632 + i32.load + i32.le_u + if + loop $do-continue|012 + i32.const 1 + local.get $0 + i32.const 3 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof11 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|012 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 1584 + i32.const 1520 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1676 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + block $__inlined_func$~lib/rt/__instanceof14 (result i32) + local.get $1 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1632 + i32.load + i32.le_u + if + loop $do-continue|015 + i32.const 1 + local.get $0 + i32.const 3 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof14 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|015 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 1584 + i32.const 1520 + i32.const 41 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1676 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + block $__inlined_func$~lib/rt/__instanceof17 (result i32) + local.get $1 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1632 + i32.load + i32.le_u + if + loop $do-continue|018 + i32.const 1 + local.get $0 + i32.const 3 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof17 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|018 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 1584 + i32.const 1520 + i32.const 47 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 18060 + global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - call $~lib/rt/itcms/step - drop - br $while-continue|1 + 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 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 + i32.const 18080 + i32.const 18128 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $managed-cast/Cat#constructor (result i32) (local $0 i32) @@ -1722,43 +1844,60 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1676 + 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 3 call $~lib/rt/itcms/__new local.tee $0 i32.store + 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 1676 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 18080 + i32.const 18128 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index a051559715..44910d0a08 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -771,7 +771,7 @@ end local.get $5 ) - (func $start:memcpy + (func $~start i32.const 8 i64.const 1229782938247303441 i64.store @@ -947,7 +947,4 @@ unreachable end ) - (func $~start - call $start:memcpy - ) ) diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 914d85840b..beca1f92ff 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -182,7 +182,7 @@ end end ) - (func $start:memmove + (func $~start i32.const 8 i64.const 1229782938247303441 i64.store @@ -358,7 +358,4 @@ unreachable end ) - (func $~start - call $start:memmove - ) ) diff --git a/tests/compiler/memory.optimized.wat b/tests/compiler/memory.optimized.wat index 45f1173f28..b7cbc490c7 100644 --- a/tests/compiler/memory.optimized.wat +++ b/tests/compiler/memory.optimized.wat @@ -1,7 +1,6 @@ (module (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -17,7 +16,7 @@ (global $memory/ptr (mut i32) (i32.const 1088)) (export "memory" (memory $0)) (start $~start) - (func $memory/test (result i32) + (func $start:memory (local $0 i32) i32.const 1024 i32.const 1024 @@ -27,10 +26,6 @@ i32.add i32.store local.get $0 - ) - (func $start:memory - (local $0 i32) - call $memory/test if i32.const 0 i32.const 1056 @@ -39,7 +34,14 @@ call $~lib/builtins/abort unreachable end - call $memory/test + i32.const 1024 + i32.const 1024 + i32.load + local.tee $0 + i32.const 1 + i32.add + i32.store + local.get $0 i32.const 1 i32.ne if @@ -50,7 +52,14 @@ call $~lib/builtins/abort unreachable end - call $memory/test + i32.const 1024 + i32.const 1024 + i32.load + local.tee $0 + i32.const 1 + i32.add + i32.store + local.get $0 i32.const 2 i32.ne if diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index 5c1a4b4a03..3b25f156b4 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -172,8 +172,8 @@ local.set $2 local.get $1 i64.extend_i32_u - local.get $1 - i64.extend_i32_u + local.tee $4 + local.get $4 i64.const 32 i64.shl i64.or @@ -208,7 +208,7 @@ end end ) - (func $start:memset + (func $~start i32.const 17468 global.set $memset/dest i32.const 17468 @@ -294,7 +294,4 @@ unreachable end ) - (func $~start - call $start:memset - ) ) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index 32b508fdbf..256e673d75 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -1,9 +1,9 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) + (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_=>_none (func (param i32 i32 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))) @@ -39,15 +39,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17884)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -129,170 +120,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17884 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17884 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -580,12 +555,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -939,7 +914,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1002,7 +982,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1082,7 +1067,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17884 i32.ge_u if @@ -1092,19 +1077,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1121,11 +1106,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1135,10 +1123,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1205,23 +1195,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 + (local $4 i32) + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1231,18 +1273,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1250,15 +1292,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1285,22 +1327,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1309,32 +1351,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1346,70 +1388,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1467,7 +1473,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + if + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1479,14 +1495,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $new/Ref#constructor global.set $new/ref @@ -1535,7 +1566,12 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~stack_check + (func $new/Ref#constructor (result i32) + (local $0 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 1500 i32.lt_s @@ -1547,18 +1583,11 @@ call $~lib/builtins/abort unreachable end - ) - (func $new/Ref#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3 call $~lib/rt/itcms/__new local.tee $0 @@ -1574,7 +1603,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + if + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1599,11 +1638,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + if + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 @@ -1620,11 +1670,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + if + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 6 call $~lib/rt/itcms/__new local.tee $0 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 402a0479de..d06f96ed38 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -1,14 +1,12 @@ (module (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 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_i32_=>_none (func (param i32 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))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -28,38 +26,41 @@ (data (i32.const 1528) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 1596) "<") (data (i32.const 1608) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1660) "\\") - (data (i32.const 1672) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1756) "\1c") - (data (i32.const 1768) "\01\00\00\00\02\00\00\001") - (data (i32.const 1788) ",") - (data (i32.const 1800) "\01\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1836) "\1c") - (data (i32.const 1848) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1868) "\1c") - (data (i32.const 1880) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1900) ",") - (data (i32.const 1912) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1948) ",") - (data (i32.const 1960) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 2056) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + i32.const 100 + i32.ge_u + if local.get $0 local.get $2 - i32.const 1 + i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i32.const 10 + i32.const 100 i32.rem_u - i32.const 48 + i32.const 2 + i32.shl + i32.const 1660 i32.add - i32.store16 + i32.load + i32.store local.get $1 - i32.const 10 + i32.const 100 i32.div_u - local.tee $1 - br_if $do-continue|0 + local.set $1 end - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end - i32.const 0 + local.get $1 + i32.const 10 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $2 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 i32.shl - call $~lib/rt/itcms/__new - local.tee $0 + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load i32.store + else local.get $0 local.get $2 - local.get $3 - call $~lib/util/number/utoa_dec_simple + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 48 i32.add - global.set $~lib/memory/__stack_pointer + i32.store16 end - local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1887,7 +1874,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -1901,36 +1888,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -1943,33 +1935,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -1996,6 +1988,7 @@ i32.sub local.tee $9 i64.extend_i32_s + local.tee $0 i64.shl local.tee $10 i64.const 1 @@ -2004,12 +1997,57 @@ i64.and local.set $6 local.get $2 - local.get $9 - i64.extend_i32_s + local.get $0 i64.shr_u i32.wrap_i64 local.tee $1 - call $~lib/util/number/decimalCount32 + local.set $3 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end local.set $7 loop $while-continue|0 local.get $7 @@ -2139,7 +2177,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2000 + i32.const 3456 i32.add local.get $3 i32.const 65535 @@ -2174,7 +2212,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 2928 + i32.const 4384 i32.add i64.load32_u local.get $9 @@ -2184,28 +2222,12 @@ local.get $5 i32.const 1 i32.shl - i32.const 1998 + i32.const 3454 i32.add - local.tee $3 + local.tee $7 i32.load16_u - local.set $1 + local.set $3 loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $0 - i64.sub - local.get $0 - local.get $2 - i64.add - local.tee $6 - local.get $8 - i64.sub - i64.gt_u - local.get $6 - local.get $8 - i64.lt_u - select - i32.const 0 local.get $2 local.get $4 local.get $0 @@ -2216,12 +2238,30 @@ local.get $8 i64.lt_u select - select + if (result i32) + i32.const 1 + local.get $8 + local.get $0 + i64.sub + local.get $0 + local.get $2 + i64.add + local.tee $6 + local.get $8 + i64.sub + i64.gt_u + local.get $6 + local.get $8 + i64.lt_u + select + else + i32.const 0 + end if - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 + local.set $3 local.get $0 local.get $2 i64.add @@ -2229,8 +2269,8 @@ br $while-continue|3 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 return @@ -2262,7 +2302,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2000 + i32.const 3456 i32.add local.get $6 i32.wrap_i64 @@ -2300,7 +2340,7 @@ i32.sub i32.const 2 i32.shl - i32.const 2928 + i32.const 4384 i32.add i64.load32_u i64.mul @@ -2308,28 +2348,12 @@ local.get $5 i32.const 1 i32.shl - i32.const 1998 + i32.const 3454 i32.add - local.tee $3 + local.tee $7 i32.load16_u - local.set $1 + local.set $3 loop $while-continue|6 - i32.const 1 - local.get $2 - local.get $0 - i64.sub - local.get $0 - local.get $10 - i64.add - local.tee $6 - local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $6 - i64.gt_u - select - i32.const 0 local.get $10 local.get $4 local.get $0 @@ -2340,12 +2364,30 @@ local.get $2 i64.lt_u select - select + if (result i32) + i32.const 1 + local.get $2 + local.get $0 + i64.sub + local.get $0 + local.get $10 + i64.add + local.tee $6 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $6 + i64.gt_u + select + else + i32.const 0 + end if - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 + local.set $3 local.get $0 local.get $10 i64.add @@ -2353,1365 +2395,1883 @@ br $while-continue|6 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end end + br $break|2 end - end - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 2000 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $0 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 + local.get $1 + i32.load + local.set $5 local.get $0 - local.get $3 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - i32.const 2000 - i32.add - i32.const 48 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $3 - i32.const 1 - i32.shl - i32.const 2000 - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $3 - i32.const 1 - i32.shl - i32.const 2000 - i32.add local.tee $3 - i32.const 2 + i32.const 1 i32.add - local.get $3 - i32.const 0 + local.set $0 local.get $1 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - i32.const 46 - i32.store16 - local.get $0 + local.tee $4 i32.const 1 i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 + local.set $1 local.get $3 - i32.const -6 - i32.gt_s - select - if (result i32) - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.const 2000 - i32.add - i32.const 2000 - local.get $0 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - i32.const 2000 - i32.const 3014704 - i32.store - i32.const 2 - local.set $1 - loop $for-loop|1 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 local.get $3 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - i32.const 2000 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - local.get $3 - i32.add - else - local.get $0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2002 - i32.const 101 - i32.store16 - i32.const 2004 - local.get $3 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $0 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 + i32.const 8 + i32.shr_u local.get $1 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa_dec_simple - i32.const 2004 - i32.const 45 - i32.const 43 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 local.get $0 - select - i32.store16 + local.get $3 + i32.const 8 + i32.shr_u local.get $1 - i32.const 2 - i32.add - else - i32.const 2004 - i32.const 2002 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 local.get $0 - i32.const 1 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 i32.shl - local.tee $1 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - i32.const 2002 - i32.const 46 - i32.store16 + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 local.get $1 - i32.const 2000 + i32.const 16 i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 - local.get $1 - local.tee $2 - i32.const 4 + local.set $1 + local.get $0 + i32.const 16 i32.add - local.get $3 - i32.const 1 + local.set $0 + local.get $2 + i32.const 16 i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add + local.set $2 + br $while-continue|5 end end end end - ) - (func $~lib/util/number/dtoa_core (result i32) - (local $0 i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 f64) - i32.const -4 - global.set $~lib/util/number/_K - i32.const 2408 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 2840 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $3 - i64.const 4294967295 - i64.and - local.set $1 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - i64.const 31 - i64.shl - local.get $1 - i64.const 31 - i64.shl - local.get $1 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $2 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - 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 - i64.const 1 - i64.sub - local.set $0 - local.get $3 - i64.const 31 - i64.shl - local.get $1 - i64.const 31 - i64.shl - local.tee $2 - i64.const 32 - i64.shr_u - i64.add local.get $2 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - i32.const 2 - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.add - local.get $0 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $0 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $0 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - ) - (func $~lib/number/F32.isSafeInteger (param $0 f32) (result i32) - local.get $0 - local.get $0 - f32.trunc - f32.eq - i32.const 0 - local.get $0 - f32.abs - f32.const 16777215 - f32.le - select - ) - (func $~lib/number/F32.isInteger (param $0 f32) (result i32) - local.get $0 - local.get $0 - f32.trunc - f32.eq - i32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.eq - select - ) - (func $~lib/number/F64.isSafeInteger (param $0 f64) (result i32) - local.get $0 - local.get $0 - f64.trunc - f64.eq - i32.const 0 - local.get $0 - f64.abs - f64.const 9007199254740991 - f64.le - select - ) - (func $~lib/number/F64.isInteger (param $0 f64) (result i32) - local.get $0 - local.get $0 - f64.trunc - f64.eq - i32.const 0 - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - select - ) - (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 16 + i32.and + if local.get $0 - i32.load + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - unreachable - ) - (func $~start - call $start:number - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 3228 - i32.lt_s - if - i32.const 19632 - i32.const 19680 + local.get $1 i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:number - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 19612 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1424 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1568 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $number/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1776 - i32.store offset=4 - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 5 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 2000 - local.get $1 - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2992 - i32.store offset=4 - local.get $0 - i32.const 2992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 7 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3024 - i32.store offset=4 - local.get $0 - i32.const 3024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 8 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -5 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3056 - i32.store offset=4 - local.get $0 - i32.const 3056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 10 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3088 - i32.store offset=4 - local.get $0 - i32.const 3088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 11 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $number/a - i32.const 1 - i32.add - global.set $number/a - global.get $number/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3120 - i32.store offset=4 - local.get $0 - i32.const 3120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 12 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $number/a - i32.const 1 - i32.sub - global.set $number/a - global.get $number/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1776 - i32.store offset=4 - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 13 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3152 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3152 - i32.store offset=4 - i32.const 3152 - i32.const 3152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 14 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3184 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3184 - i32.store offset=4 - i32.const 3184 - i32.const 3184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 15 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $number/a - local.tee $0 - i32.const 1 - i32.add - global.set $number/a - local.get $0 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1776 - i32.store offset=4 - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 18 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $number/a - local.tee $0 - i32.const 1 - i32.sub - global.set $number/a - local.get $0 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3120 - i32.store offset=4 - local.get $0 - i32.const 3120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 19 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -16777216 - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 25 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -16777215 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 26 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 27 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 28 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 29 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 30 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 16777215 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 31 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 16777216 - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 32 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 33 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 34 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 35 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 36 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 37 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1920928955078125e-07 - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 38 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - f32.const 1 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne + local.get $2 + i32.const 8 + i32.and if - i32.const 0 - i32.const 1808 - i32.const 39 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 40 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -16777215 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 41 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 16777215 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 42 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 43 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 44 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9007199254740992 - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 48 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9007199254740991 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 49 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 50 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 51 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 52 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 53 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - f64.const 9007199254740991 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne + local.get $2 + i32.const 4 + i32.and if - i32.const 0 - i32.const 1808 - i32.const 54 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9007199254740992 - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 55 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1808 - i32.const 56 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - f64.const 0 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne + local.get $2 + i32.const 2 + i32.and if - i32.const 0 - i32.const 1808 - i32.const 57 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - f64.const -0 - call $~lib/number/F64.isInteger + local.get $2 i32.const 1 - i32.ne + i32.and if + local.get $0 + local.get $1 + i32.load8_u + 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 - i32.const 1808 - i32.const 58 + 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/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + local.get $0 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + i32.const 3145774 + i32.store + local.get $0 + i32.const 2 + i32.add + return + end + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + i32.const 0 + local.get $0 + local.get $3 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + i32.const 48 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $3 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + if (result i32) + local.get $3 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + local.tee $3 + i32.const 2 + i32.add + local.get $3 + i32.const 0 + local.get $1 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + i32.const 46 + i32.store16 + local.get $0 + i32.const 1 + i32.add + else + local.get $3 + i32.const 0 + i32.le_s + i32.const 0 + local.get $3 + i32.const -6 + i32.gt_s + select + if (result i32) + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + i32.const 3456 + local.get $0 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + i32.const 3456 + i32.const 3014704 + i32.store + i32.const 2 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.get $3 + i32.add + else + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 3458 + i32.const 101 + i32.store16 + local.get $3 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $1 + 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.set $0 + i32.const 3460 + local.get $1 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + i32.const 3460 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + i32.const 3460 + i32.const 3458 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + i32.sub + call $~lib/memory/memory.copy + i32.const 3458 + i32.const 46 + i32.store16 + local.get $1 + i32.const 3456 + i32.add + local.tee $1 + i32.const 101 + i32.store16 offset=2 + local.get $1 + local.tee $2 + i32.const 4 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $5 + if + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $1 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + local.get $1 + local.get $3 + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $5 + select + i32.store16 offset=4 + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.add + end + end + end + end + ) + (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 + call $start:number + ) + (func $start:number + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 f64) + 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 + i32.const 4684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 21068 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + global.get $number/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3232 + i32.store offset=4 + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4684 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -4 + global.set $~lib/util/number/_K + i32.const 3864 + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 4296 + 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 + i64.const 32 + i64.shr_u + local.tee $5 + i64.const 31 + i64.shl + local.get $3 + i64.const 31 + i64.shl + local.get $3 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.tee $4 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + 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 + local.get $3 + i64.const 31 + i64.shl + local.tee $4 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + i64.const 4294967295 + i64.and + 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 + i32.const 2 + i32.add + local.get $2 + local.get $5 + i64.const 2147483647 + i64.mul + local.get $3 + i64.const 2147483647 + i64.mul + local.get $3 + i64.const 4294966784 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $2 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + i64.const 4294966784 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + call $~lib/util/number/genDigits + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 3456 + local.get $1 + 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.get $0 + i32.store + local.get $1 + i32.const 4448 + i32.store offset=4 + local.get $0 + i32.const 4448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4480 + i32.store offset=4 + local.get $0 + i32.const 4480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -5 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4512 + i32.store offset=4 + local.get $0 + i32.const 4512 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4544 + i32.store offset=4 + local.get $0 + i32.const 4544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $number/a i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 59 + i32.add + global.set $number/a + global.get $number/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4576 + i32.store offset=4 + local.get $0 + i32.const 4576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $number/a i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 60 + i32.sub + global.set $number/a + global.get $number/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3232 + i32.store offset=4 + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4608 + i32.store + local.get $0 + i32.const 4608 + i32.store offset=4 + i32.const 4608 + i32.const 4608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4640 + i32.store + local.get $0 + i32.const 4640 + i32.store offset=4 + i32.const 4640 + i32.const 4640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $number/a + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.220446049250313e-16 - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 61 + i32.add + global.set $number/a + local.get $0 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3232 + i32.store offset=4 + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $number/a + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + global.set $number/a + local.get $0 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4576 + i32.store offset=4 + local.get $0 + i32.const 4576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - f64.const 1 - call $~lib/number/F64.isInteger + i32.const 21088 + i32.const 21136 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/number/F64.isInteger i32.const 1 - i32.ne + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 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 4684 + i32.lt_s if - i32.const 0 - i32.const 1808 - i32.const 63 + i32.const 21088 + i32.const 21136 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9007199254740991 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9007199254740991 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1808 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + return end - f64.const 0.5 - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1808 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + 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 - f64.const -1.5 - call $~lib/number/F64.isInteger + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $1 if - i32.const 0 - i32.const 1808 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 526c424157..7ee6222085 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1,12 +1,11 @@ (module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (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 $none_=>_i32 (func (result 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))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -48,48 +47,10 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18156)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -114,7 +75,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -137,7 +98,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -147,15 +108,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -191,10 +157,31 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 i32.eqz if @@ -227,8 +214,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -240,7 +225,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -251,14 +236,6 @@ end end ) - (func $object-literal/Managed#set:baz (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -304,16 +281,6 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -619,12 +586,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -978,12 +945,15 @@ unreachable end local.get $1 - local.get $1 + local.tee $0 i32.load i32.const 1 i32.or - i32.store + local.set $1 + local.get $0 local.get $1 + i32.store + local.get $0 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) @@ -1030,7 +1000,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1093,7 +1068,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1179,10 +1159,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1203,28 +1185,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1337,23 +1319,43 @@ unreachable end local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub + local.tee $2 local.get $1 i32.const 12 i32.le_u - select - local.tee $2 + 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 @@ -1361,25 +1363,10 @@ i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1406,7 +1393,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1414,8 +1401,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1428,7 +1415,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -1442,13 +1429,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.set $3 - local.get $2 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1464,33 +1451,33 @@ local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -1520,43 +1507,143 @@ end local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz + (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 - call $~lib/rt/tlsf/initialize + i32.const 1312 + i32.const 1104 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 + 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 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 local.get $2 @@ -1565,33 +1652,33 @@ local.get $2 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 local.get $2 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.sub i32.const 3 i32.and local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 local.get $1 + local.get $0 local.get $2 i32.sub i32.const -4 @@ -1600,55 +1687,55 @@ i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - 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 $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 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 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 @@ -1689,96 +1776,7 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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 + local.get $3 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1806,7 +1804,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -1820,36 +1818,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -1862,33 +1865,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -1896,1253 +1899,2095 @@ end i32.eqz ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end - ) - (func $object-literal/testOmittedTypes (param $0 i32) - local.get $0 - i32.load - if - i32.const 0 - i32.const 1504 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - if - i32.const 0 - i32.const 1504 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.load offset=8 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.load offset=16 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.load offset=24 - f32.const 0 - f32.ne - if - i32.const 0 - i32.const 1504 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1504 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_s offset=40 - if - i32.const 0 - i32.const 1504 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=41 - if - i32.const 0 - i32.const 1504 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load16_s offset=42 - if - i32.const 0 - i32.const 1504 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load16_u offset=44 - if - i32.const 0 - i32.const 1504 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=48 - if - i32.const 0 - i32.const 1504 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=52 - if - i32.const 0 - i32.const 1504 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=56 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1504 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=64 + local.get $2 + i32.const 16 + i32.and if - i32.const 0 - i32.const 1504 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $object-literal/OmittedFoo#set:quux (param $0 i32) - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $object-literal/OmittedFoo#set:quuz (param $0 i32) - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $object-literal/OmittedFoo#set:corge (param $0 i32) - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $object-literal/OmittedFoo#set:grault (param $0 i32) - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $object-literal/OmittedFoo#set:garply (param $0 i32) - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $object-literal/OmittedFoo#set:waldo (param $0 i32) - local.get $0 - i32.const 0 - i32.store offset=28 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (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 - end - local.get $0 - i32.load offset=4 - local.tee $1 - if - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=8 - local.tee $1 - if - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=12 - local.tee $1 - if - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=24 - local.tee $1 - if - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.load offset=28 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - i32.load offset=4 - local.tee $0 + local.get $2 + i32.const 8 + i32.and if local.get $0 - call $~lib/rt/itcms/__visit - end - ) - (func $~start - call $start:object-literal - ) - (func $~stack_check - 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 - ) - (func $object-literal/testOmittedFoo (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1664 - i32.store offset=4 - local.get $1 - i32.const 1664 - call $~lib/string/String.__eq - i32.eqz - if + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + 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 + 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 + end + local.get $0 + i32.load offset=4 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=8 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=12 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=16 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=20 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=24 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=28 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + end + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:object-literal + ) + (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 + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + 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 + i32.const 0 + i32.store offset=16 + i32.const 1156 + i32.const 1152 + i32.store + i32.const 1160 + i32.const 1152 + i32.store + i32.const 1152 + global.set $~lib/rt/itcms/toSpace + memory.size + i32.const 16 + i32.shl + i32.const 18156 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/pinSpace + 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 + local.get $0 + i32.const 4 + 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 $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 123 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=4 + local.get $2 + i32.const 1056 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $2 + i32.store + local.get $0 + 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 + i64.const 0 + i64.store + local.get $2 + i32.load + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + 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.const 1056 + i32.store offset=4 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 10 + 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/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + i32.store offset=4 + local.get $6 + i32.const 123 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 4 + 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 + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#substring + i32.const 0 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + local.tee $3 + local.get $3 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 5 + local.get $3 + local.get $3 + 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.get $2 + 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.get $3 + 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 $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 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $6 + local.get $5 + i32.store offset=4 + 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 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $6 + i32.load + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $6 + i32.load offset=4 + local.tee $0 + i32.store + local.get $1 + i32.const 1600 + i32.store offset=4 + local.get $0 + i32.const 1600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + 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 1772 + 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 65 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + f32.const 0 + f32.store offset=24 + local.get $0 + f64.const 0 + f64.store offset=32 + local.get $0 + i32.const 0 + i32.store8 offset=40 + local.get $0 + i32.const 0 + i32.store8 offset=41 + local.get $0 + i32.const 0 + i32.store16 offset=42 + local.get $0 + i32.const 0 + i32.store16 offset=44 + local.get $0 + i32.const 0 + i32.store offset=48 + local.get $0 + i32.const 0 + i32.store offset=52 + local.get $0 + f64.const 0 + f64.store offset=56 + local.get $0 + i32.const 0 + i32.store8 offset=64 + 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=8 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + f32.const 0 + f32.store offset=24 + local.get $0 + f64.const 0 + f64.store offset=32 + local.get $0 + i32.const 0 + i32.store8 offset=40 + local.get $0 + i32.const 0 + i32.store8 offset=41 + local.get $0 + i32.const 0 + i32.store16 offset=42 + local.get $0 + i32.const 0 + i32.store16 offset=44 + local.get $0 + i32.const 0 + i32.store offset=48 + local.get $0 + i32.const 0 + i32.store offset=52 + local.get $0 + f64.const 0 + f64.store offset=56 + local.get $0 + i32.const 0 + i32.store8 offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + if + i32.const 0 + i32.const 1504 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + if + i32.const 0 + i32.const 1504 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.load offset=8 + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.load offset=16 + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + f32.load offset=24 + f32.const 0 + f32.ne + if + i32.const 0 + i32.const 1504 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + f64.load offset=32 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_s offset=40 + if + i32.const 0 + i32.const 1504 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=41 + if + i32.const 0 + i32.const 1504 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load16_s offset=42 + if + i32.const 0 + i32.const 1504 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load16_u offset=44 + if + i32.const 0 + i32.const 1504 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=48 + if + i32.const 0 + i32.const 1504 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=52 + if + i32.const 0 + i32.const 1504 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + f64.load offset=56 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=64 + if + i32.const 0 + i32.const 1504 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1772 + 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 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 1632 + i32.store offset=4 + local.get $2 + i32.const 1632 + call $~lib/rt/itcms/__link + local.get $2 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $2 + i32.store + local.get $0 + 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 + i64.const 0 + i64.store + local.get $2 + i32.load + if + i32.const 0 + i32.const 1504 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + 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.const 1632 + i32.store offset=4 + local.get $0 + i32.const 1632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + f64.load offset=8 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 84 + 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 + local.tee $1 + i32.const 4 + 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 $0 + i32.const 0 + i32.store + local.get $0 + i32.const 40 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 1664 + i32.store + local.get $0 + i32.const 1664 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 1696 + i32.store offset=4 + local.get $0 + i32.const 1696 + call $~lib/rt/itcms/__link + local.get $0 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.get $0 - i32.load offset=4 - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1696 - i32.store offset=4 - local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - i32.eqz - if + i32.store offset=8 + local.get $0 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 + call $~lib/rt/itcms/__link + local.get $0 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.store offset=12 + local.get $0 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 + call $~lib/rt/itcms/__link + local.get $0 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.store offset=16 + local.get $0 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 + call $~lib/rt/itcms/__link + local.get $0 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.store offset=20 + local.get $0 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 + call $~lib/rt/itcms/__link + local.get $0 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.store offset=24 + local.get $0 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) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - i32.const 1152 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - memory.size - i32.const 16 - i32.shl - i32.const 18156 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1360 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $object-literal/Managed#set:baz - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 123 - i32.store - local.get $0 - i32.const 1056 - call $object-literal/Managed#set:baz - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load - i32.const 123 - i32.ne - if + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=28 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=32 + local.get $0 + i32.const -1 + i32.store offset=36 + 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=16 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 i32.const 0 - i32.const 1504 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__link + local.get $0 i32.const 0 - i32.const 1504 - i32.const 10 - 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 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 123 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - local.get $0 - call $~lib/string/String#substring - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load - i32.const 123 - i32.ne - if + i32.store offset=16 + local.get $0 i32.const 0 - i32.const 1504 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1600 - i32.store offset=4 - local.get $1 - i32.const 1600 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__link + local.get $0 i32.const 0 - i32.const 1504 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 65 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - f32.const 0 - f32.store offset=24 - local.get $0 - f64.const 0 - f64.store offset=32 - local.get $0 - i32.const 0 - i32.store8 offset=40 - local.get $0 - i32.const 0 - i32.store8 offset=41 - local.get $0 - i32.const 0 - i32.store16 offset=42 - local.get $0 - i32.const 0 - i32.store16 offset=44 - local.get $0 - i32.const 0 - i32.store offset=48 - local.get $0 - i32.const 0 - i32.store offset=52 - local.get $0 - f64.const 0 - f64.store offset=56 - local.get $0 - i32.const 0 - i32.store8 offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - f32.const 0 - f32.store offset=24 - local.get $0 - f64.const 0 - f64.store offset=32 - local.get $0 - i32.const 0 - i32.store8 offset=40 - local.get $0 - i32.const 0 - i32.store8 offset=41 - local.get $0 - i32.const 0 - i32.store16 offset=42 - local.get $0 - i32.const 0 - i32.store16 offset=44 - local.get $0 - i32.const 0 - i32.store offset=48 - local.get $0 - i32.const 0 - i32.store offset=52 - local.get $0 - f64.const 0 - f64.store offset=56 - local.get $0 - i32.const 0 - i32.store8 offset=64 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $object-literal/testOmittedTypes - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $object-literal/Managed#set:baz - local.get $0 - f64.const 0 - f64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1632 - call $object-literal/Managed#set:baz - local.get $0 - f64.const 0 - f64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load - if + i32.store offset=20 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=28 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + 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 - i32.const 1504 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1632 - i32.store offset=4 - local.get $1 - i32.const 1632 - call $~lib/string/String.__eq - i32.eqz - if + 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 - i32.const 1504 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=8 - f64.const 0 - f64.ne - if + 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 - i32.const 1504 - i32.const 84 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 40 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 1664 - i32.store - local.get $0 - i32.const 1664 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 1696 - call $object-literal/Managed#set:baz - local.get $0 - call $object-literal/OmittedFoo#set:quux - local.get $0 - call $object-literal/OmittedFoo#set:quuz - local.get $0 - call $object-literal/OmittedFoo#set:corge - local.get $0 - call $object-literal/OmittedFoo#set:grault - local.get $0 - call $object-literal/OmittedFoo#set:garply - local.get $0 - call $object-literal/OmittedFoo#set:waldo - local.get $0 - i32.const 0 - i32.store offset=32 - local.get $0 - i32.const -1 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $0 - call $object-literal/OmittedFoo#set:quux - local.get $0 - call $object-literal/OmittedFoo#set:quuz - local.get $0 - call $object-literal/OmittedFoo#set:corge - local.get $0 - call $object-literal/OmittedFoo#set:grault - local.get $0 - call $object-literal/OmittedFoo#set:garply - local.get $0 - call $object-literal/OmittedFoo#set:waldo - local.get $0 - i32.const 0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - 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|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 + 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 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|00 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|11 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0 + br $while-continue|11 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#substring (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.tee $1 - i32.const 5 - local.get $0 - local.get $0 - i32.const 5 - i32.gt_s - select - local.tee $2 - local.get $1 - local.get $2 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $3 - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + 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/memory/__stack_pointer - i32.const 1568 - return - end - i32.const 0 - local.get $3 - local.get $0 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if + global.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1056 return end - global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 18176 + i32.const 18224 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $1 - i32.const 1056 - i32.add - 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 - local.get $0 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index b455ab9959..c49fae4557 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.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 (func (param i32) (result i32))) - (type $i32_=>_none (func (param 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))) @@ -35,15 +35,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -101,170 +92,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17868 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17868 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -552,12 +527,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -911,7 +886,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -974,7 +954,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1054,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17868 i32.ge_u if @@ -1064,19 +1049,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1093,11 +1078,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1107,10 +1095,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1177,23 +1167,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 + (local $4 i32) + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1203,18 +1245,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1222,15 +1264,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1257,22 +1299,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1281,32 +1323,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1318,70 +1360,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1433,87 +1439,112 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17868 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1168 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $optional-typeparameters/tConcrete - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tConcrete - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $optional-typeparameters/tDerived - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tDerived - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1484 - i32.lt_s - if - i32.const 17888 - i32.const 17936 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17868 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1484 + 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 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tConcrete + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $optional-typeparameters/tConcrete + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1484 + 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 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tDerived + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $optional-typeparameters/tDerived + i32.store + local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/possibly-null.optimized.wat b/tests/compiler/possibly-null.optimized.wat index 0f3019966d..1559801cc8 100644 --- a/tests/compiler/possibly-null.optimized.wat +++ b/tests/compiler/possibly-null.optimized.wat @@ -1,7 +1,6 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param 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))) (memory $0 0) @@ -25,7 +24,12 @@ (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalAndMulti)) (export "testAssign" (func $export:possibly-null/testLogicalAndMulti)) (export "testNeverNull" (func $export:possibly-null/testTrue)) - (func $~stack_check + (func $export:possibly-null/testTrue (param $0 i32) + (local $1 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 1024 i32.lt_s @@ -37,17 +41,11 @@ call $~lib/builtins/abort unreachable end - ) - (func $export:possibly-null/testTrue (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -57,7 +55,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 17440 + i32.const 17488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -75,15 +83,27 @@ global.set $~lib/memory/__stack_pointer ) (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 17440 + i32.const 17488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 loop $while-continue|0 @@ -100,15 +120,27 @@ global.set $~lib/memory/__stack_pointer ) (func $export:possibly-null/testWhile3 (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 17440 + i32.const 17488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 loop $while-continue|0 @@ -128,18 +160,30 @@ global.set $~lib/memory/__stack_pointer ) (func $export:possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 17440 + i32.const 17488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 8 i32.add global.set $~lib/memory/__stack_pointer diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index a991b92d0d..94296c179a 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -4,8 +4,8 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 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))) (memory $0 1) @@ -118,15 +118,6 @@ local.get $1 i32.mul ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -178,170 +169,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17916 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17916 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1168 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -629,12 +604,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -988,7 +963,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1051,7 +1031,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1131,7 +1116,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17916 i32.ge_u if @@ -1141,19 +1126,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1170,11 +1155,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1184,10 +1172,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1254,44 +1244,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + 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.const 65563 + 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 $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1299,15 +1341,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1334,22 +1376,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1358,32 +1400,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1395,70 +1437,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 4 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1562,7 +1568,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1574,14 +1590,29 @@ 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 i32.const 2 @@ -1608,7 +1639,11 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~stack_check + (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result 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 1532 i32.lt_s @@ -1620,13 +1655,6 @@ call $~lib/builtins/abort unreachable end - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1652,34 +1680,58 @@ local.get $0 ) (func $export:exports/Car#get:doors (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store local.get $0 i32.load - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) (func $export:exports/Car#set:doors (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store local.get $0 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1689,7 +1741,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -1713,15 +1775,27 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/Car#openDoors (param $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1731,52 +1805,67 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable end - unreachable + i32.const 2 + local.set $1 end - i32.const 2 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 149580ad4d..e9890509c5 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1,12 +1,12 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_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 $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -68,15 +68,6 @@ local.get $1 i32.mul ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -140,170 +131,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17956 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17956 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1168 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1536 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -591,12 +566,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -950,7 +925,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1013,7 +993,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1093,7 +1078,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17956 i32.ge_u if @@ -1103,19 +1088,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1132,11 +1117,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1146,10 +1134,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1216,44 +1206,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 4 + memory.size + local.tee $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $1 + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1261,17 +1303,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1282,7 +1324,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1296,10 +1338,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1310,14 +1352,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1327,26 +1369,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1356,71 +1398,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 + local.get $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 4 i32.store offset=16 - local.get $0 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $0 i32.load @@ -1496,99 +1502,135 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 1216 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1248 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1392 - call $~lib/rt/itcms/initLazy - 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 + 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.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.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 0 - i32.const 1504 - i32.const 24 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17956 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + 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 + 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) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - ) - (func $~stack_check global.get $~lib/memory/__stack_pointer i32.const 1572 i32.lt_s @@ -1600,18 +1642,11 @@ call $~lib/builtins/abort unreachable end - ) - (func $exports/Car#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/rt/itcms/__new local.tee $0 i32.store diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 8cb1f9e864..deddadf94b 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1,11 +1,10 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param 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 (func (param i32) (result 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))) @@ -30,10 +29,13 @@ (data (i32.const 1656) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 1708) "\1c") (data (i32.const 1720) "\01\00\00\00\02\00\00\000") - (data (i32.const 1740) "\\") - (data (i32.const 1752) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1840) "\06\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 1868) "\02\02\00\00\00\00\00\00\02\t\00\00\00\00\00\00 ") + (data (i32.const 1740) "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") + (data (i32.const 2140) "\1c\04") + (data (i32.const 2152) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 3196) "\\") + (data (i32.const 3208) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 3296) "\06\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 3324) "\02\02\00\00\00\00\00\00\02\t\00\00\00\00\00\00 ") (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)) @@ -44,21 +46,12 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18276)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19732)) (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -66,7 +59,9 @@ call $~lib/rt/itcms/__visit i32.const 1088 call $~lib/rt/itcms/__visit - i32.const 1760 + i32.const 2160 + call $~lib/rt/itcms/__visit + i32.const 3216 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -106,49 +101,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -173,12 +129,12 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 local.get $0 - i32.const 18276 + i32.const 19732 i32.lt_u local.get $0 i32.load offset=8 @@ -196,7 +152,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -206,15 +162,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -224,7 +185,7 @@ i32.const 1 else local.get $1 - i32.const 1840 + i32.const 3296 i32.load i32.gt_u if @@ -238,7 +199,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 1844 + i32.const 3300 i32.add i32.load i32.const 32 @@ -250,7 +211,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -557,12 +540,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -812,10 +795,10 @@ if unreachable end - i32.const 18288 + i32.const 19744 i32.const 0 i32.store - i32.const 19856 + i32.const 21312 i32.const 0 i32.store loop $for-loop|0 @@ -826,7 +809,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 18288 + i32.const 19744 i32.add i32.const 0 i32.store offset=4 @@ -844,7 +827,7 @@ i32.add i32.const 2 i32.shl - i32.const 18288 + i32.const 19744 i32.add i32.const 0 i32.store offset=96 @@ -862,13 +845,13 @@ br $for-loop|0 end end - i32.const 18288 - i32.const 19860 + i32.const 19744 + i32.const 21316 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 18288 + i32.const 19744 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -916,7 +899,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -947,7 +935,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 18276 + i32.const 19732 i32.lt_u if local.get $0 @@ -979,7 +967,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1037,7 +1030,7 @@ unreachable end local.get $0 - i32.const 18276 + i32.const 19732 i32.lt_u if local.get $0 @@ -1059,8 +1052,8 @@ local.get $0 i32.const 4 i32.add - local.tee $1 - i32.const 18276 + local.tee $0 + i32.const 19732 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1069,19 +1062,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1098,11 +1091,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1108,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1136,28 +1134,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1254,11 +1252,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1269,50 +1336,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1320,18 +1391,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1339,18 +1410,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1362,7 +1433,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1375,12 +1446,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1394,54 +1465,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1451,125 +1522,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1577,7 +1687,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1610,148 +1720,1023 @@ end end end + local.get $2 ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/memory/memcpy (param $0 i32) + (local $1 i32) (local $2 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 + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 8 + local.set $5 + i32.const 1056 + local.set $3 + loop $while-continue|0 + local.get $3 + i32.const 3 + i32.and + i32.const 0 + local.get $5 + select + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $2 + local.get $1 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|0 + end end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + local.get $0 + i32.const 3 + i32.and + i32.eqz 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 + loop $while-continue|1 + local.get $5 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $3 + i32.load + i32.store + local.get $0 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $3 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $3 + i32.load offset=12 + i32.store offset=12 + local.get $3 + i32.const 16 + i32.add + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $5 + i32.const 16 + i32.sub + local.set $5 + br $while-continue|1 + end + end + local.get $5 + i32.const 8 + i32.and + if + local.get $0 + local.get $3 + i32.load + i32.store + local.get $0 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $5 + i32.const 4 + i32.and + if + local.get $0 + local.get $3 + i32.load + i32.store + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $5 + i32.const 2 + i32.and + if + local.get $0 + local.get $3 + i32.load16_u + i32.store16 + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $3 + i32.load8_u + i32.store8 + end + return + end + local.get $5 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 + end + local.get $3 + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + local.tee $1 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.tee $2 + i32.const 2 + i32.add + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $5 + i32.const 3 + i32.sub + local.set $5 + loop $while-continue|3 + local.get $5 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $3 + i32.load offset=1 + local.tee $2 + i32.const 8 + i32.shl + local.get $4 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $2 + i32.const 24 + i32.shr_u + local.get $3 + i32.load offset=5 + local.tee $2 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 24 + i32.shr_u + local.get $3 + i32.load offset=9 + local.tee $2 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $3 + i32.load offset=13 + local.tee $4 + i32.const 8 + i32.shl + local.get $2 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $3 + i32.const 16 + i32.add + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $5 + i32.const 16 + i32.sub + local.set $5 + br $while-continue|3 + end + end + br $break|2 end + local.get $3 + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.load8_u + i32.store8 + local.get $0 + local.tee $1 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.tee $2 + i32.const 2 + i32.add + local.set $3 + local.get $1 local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $5 + i32.const 2 + i32.sub + local.set $5 + loop $while-continue|4 + local.get $5 + i32.const 18 + i32.ge_u + if + local.get $0 + local.get $3 + i32.load offset=2 + local.tee $2 + i32.const 16 + i32.shl + local.get $4 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $2 + i32.const 16 + i32.shr_u + local.get $3 + i32.load offset=6 + local.tee $2 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 16 + i32.shr_u + local.get $3 + i32.load offset=10 + local.tee $2 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $3 + i32.load offset=14 + local.tee $4 + i32.const 16 + i32.shl + local.get $2 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $3 + i32.const 16 + i32.add + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $5 + i32.const 16 + i32.sub + local.set $5 + br $while-continue|4 + end + end + br $break|2 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold + local.get $3 + i32.load + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $2 + local.get $1 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 + local.set $5 + loop $while-continue|5 + local.get $5 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $3 + i32.load offset=3 + local.tee $2 + i32.const 24 + i32.shl + local.get $4 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $2 + i32.const 8 + i32.shr_u + local.get $3 + i32.load offset=7 + local.tee $2 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 8 + i32.shr_u + local.get $3 + i32.load offset=11 + local.tee $2 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $3 + i32.load offset=15 + local.tee $4 + i32.const 24 + i32.shl + local.get $2 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $3 + i32.const 16 + i32.add + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $5 + i32.const 16 + i32.sub + local.set $5 + br $while-continue|5 + end + end + end + end + local.get $5 + i32.const 16 + i32.and + if + local.get $0 + local.get $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + local.tee $1 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.tee $2 + i32.const 2 + i32.add + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $5 + i32.const 8 + i32.and + if + local.get $0 + local.get $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + local.tee $1 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.tee $2 + i32.const 2 + i32.add + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $5 + i32.const 4 + i32.and + if + local.get $0 + local.get $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $3 + i32.const 1 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $0 + local.tee $1 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.tee $2 + i32.const 2 + i32.add + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $5 + i32.const 2 + i32.and + if + local.get $0 + local.get $3 + i32.load8_u + i32.store8 + local.get $0 + local.tee $1 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.tee $2 + i32.const 2 + i32.add + local.set $3 + local.get $1 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $3 + i32.load8_u + i32.store8 + end + ) + (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 + 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 - global.set $~lib/rt/itcms/threshold + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $1 + i32.const 100 + i32.ge_u if - call $~lib/rt/tlsf/initialize + 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 - 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 + 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.store offset=16 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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 + 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/memory/memory.copy (param $0 i32) + (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 $3 + local.set $0 i32.const 8 - local.set $4 + local.set $6 block $~lib/util/memory/memmove|inlined.0 - local.get $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 - local.get $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 $0 + local.get $3 i32.const 7 i32.and i32.eqz if loop $while-continue|0 - local.get $0 + local.get $3 i32.const 7 i32.and if - local.get $4 + local.get $6 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 + local.get $6 i32.const 1 i32.sub - local.set $4 - local.get $0 + local.set $6 + local.get $3 local.tee $2 i32.const 1 i32.add - local.set $0 - local.get $3 + local.set $3 + local.get $0 local.tee $1 i32.const 1 i32.add - local.set $3 + local.set $0 local.get $2 local.get $1 i32.load8_u @@ -1760,77 +2745,77 @@ end end loop $while-continue|1 - local.get $4 + local.get $6 i32.const 8 i32.ge_u if - local.get $0 local.get $3 + local.get $0 i64.load i64.store - local.get $4 + local.get $6 i32.const 8 i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 + local.set $6 local.get $3 i32.const 8 i32.add local.set $3 + 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 + local.get $6 if - local.get $0 + local.get $3 local.tee $2 i32.const 1 i32.add - local.set $0 - local.get $3 + local.set $3 + local.get $0 local.tee $1 i32.const 1 i32.add - local.set $3 + local.set $0 local.get $2 local.get $1 i32.load8_u i32.store8 - local.get $4 + local.get $6 i32.const 1 i32.sub - local.set $4 + local.set $6 br $while-continue|2 end end else - local.get $0 + local.get $3 i32.const 7 i32.and i32.eqz if loop $while-continue|3 - local.get $0 - local.get $4 + local.get $3 + local.get $6 i32.add i32.const 7 i32.and if - local.get $4 + local.get $6 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $4 + local.get $3 + local.get $6 i32.const 1 i32.sub - local.tee $4 + local.tee $6 i32.add - local.get $4 + local.get $6 i32.const 1056 i32.add i32.load8_u @@ -1839,17 +2824,17 @@ end end loop $while-continue|4 - local.get $4 + local.get $6 i32.const 8 i32.ge_u if - local.get $0 - local.get $4 + local.get $3 + local.get $6 i32.const 8 i32.sub - local.tee $4 + local.tee $6 i32.add - local.get $4 + local.get $6 i32.const 1056 i32.add i64.load @@ -1859,15 +2844,15 @@ end end loop $while-continue|5 - local.get $4 + local.get $6 if - local.get $0 - local.get $4 + local.get $3 + local.get $6 i32.const 1 i32.sub - local.tee $4 + local.tee $6 i32.add - local.get $4 + local.get $6 i32.const 1056 i32.add i32.load8_u @@ -1876,148 +2861,103 @@ end end end - end - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + 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 + 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 $0 - local.get $2 - i32.const 1 + i32.const 20 i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u local.tee $1 - br_if $do-continue|0 - 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 + 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 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - return end - return end - unreachable end + local.get $2 local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 18276 - i32.sub + i32.store offset=4 + local.get $2 + i32.const 8 + i32.store offset=8 + local.get $2 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1232 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1376 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - ) - (func $~stack_check + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 1892 - i32.lt_s - if - i32.const 18304 - i32.const 18352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $~lib/util/number/utoa64 (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 - call $~stack_check + 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 i32.const 0 i32.store @@ -2035,13 +2975,57 @@ i64.const 4294967295 i64.le_u if + global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + 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.tee $1 i32.const 1 i32.shl i32.const 1 @@ -2051,53 +3035,59 @@ local.get $2 local.get $3 local.get $1 - call $~lib/util/number/utoa_dec_simple + call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer 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 - 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 - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - 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 - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 i64.const 1000000000000000 i64.lt_u - select + 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.tee $1 i32.const 1 i32.shl @@ -2105,30 +3095,90 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - loop $do-continue|0 - local.get $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 + loop $while-continue|0 local.get $0 - i64.const 10 - i64.div_u - local.tee $0 - i64.const 0 - i64.ne - br_if $do-continue|0 + i64.const 100000000 + i64.ge_u + if + local.get $2 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i64.const 100000000 + i64.div_u + local.tee $0 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $4 + 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 + local.get $2 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $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 end + local.get $2 + local.get $0 + i32.wrap_i64 + local.get $1 + call $~lib/util/number/utoa32_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2138,109 +3188,28 @@ ) (func $resolve-access/arrayAccess (result i32) (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.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - call $~lib/memory/memory.copy - 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 + i32.const 3348 + i32.lt_s 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 $2 - 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 - local.set $5 - local.get $4 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $5 - i32.const 3 - i32.eq - select - if - local.get $2 - call $~lib/rt/itcms/Object#makeGray - end - end - end + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable 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 - i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~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 @@ -2268,11 +3237,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new @@ -2293,11 +3273,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 call $resolve-access/Container#constructor local.tee $0 i32.store @@ -2320,65 +3311,123 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $resolve-access/Container#constructor - local.tee $0 - i32.store - local.get $0 - i64.const 1 - i64.store - local.get $0 - i64.load - i32.wrap_i64 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa32 + 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 $1 + i32.const 0 + i32.store local.get $1 - i32.eqz - if + call $resolve-access/Container#constructor + local.tee $1 + i32.store + local.get $1 + i64.const 1 + i64.store + block $__inlined_func$~lib/util/number/utoa32 (result i32) + local.get $1 + i64.load + i32.wrap_i64 + 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 3348 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1728 + br $__inlined_func$~lib/util/number/utoa32 + end + global.get $~lib/memory/__stack_pointer + local.get $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.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1728 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32 + local.get $2 end - local.get $1 - call $~lib/util/number/decimalCount32 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple global.get $~lib/memory/__stack_pointer i32.const 4 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 - local.get $0 + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index c1ac3cb273..6da692c6cf 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1,12 +1,12 @@ (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_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param 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 (func (param i32) (result i32))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -34,57 +34,190 @@ (data (i32.const 1688) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 1756) "<") (data (i32.const 1768) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1820) "\\") - (data (i32.const 1832) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1916) "\1c") - (data (i32.const 1928) "\01\00\00\00\02\00\00\001") - (data (i32.const 1948) "\1c") - (data (i32.const 1960) "\01\00\00\00\02\00\00\002") - (data (i32.const 1980) "\1c") - (data (i32.const 1992) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 2012) "\1c") - (data (i32.const 2024) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 2044) ",") - (data (i32.const 2056) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 2092) ",") - (data (i32.const 2104) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 2200) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8)\93i\1b\04\bd\00\00\00\00\00\00\f6?") + (data (i32.const 3617) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") + (data (i32.const 3649) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") + (data (i32.const 3681) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") + (data (i32.const 3713) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") + (data (i32.const 3745) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") + (data (i32.const 3777) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") + (data (i32.const 3809) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") + (data (i32.const 3841) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") + (data (i32.const 3873) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") + (data (i32.const 3905) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") + (data (i32.const 3937) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") + (data (i32.const 3969) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") + (data (i32.const 4001) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") + (data (i32.const 4033) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") + (data (i32.const 4065) "@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?") + (data (i32.const 4097) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") + (data (i32.const 4129) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") + (data (i32.const 4161) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") + (data (i32.const 4193) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") + (data (i32.const 4225) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") + (data (i32.const 4257) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") + (data (i32.const 4289) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") + (data (i32.const 4321) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") + (data (i32.const 4353) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") + (data (i32.const 4385) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") + (data (i32.const 4417) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") + (data (i32.const 4449) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") + (data (i32.const 4481) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") + (data (i32.const 4513) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") + (data (i32.const 4545) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") + (data (i32.const 4577) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") + (data (i32.const 4609) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") + (data (i32.const 4641) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") + (data (i32.const 6145) "`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?") + (data (i32.const 6177) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") + (data (i32.const 6209) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") + (data (i32.const 6241) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") + (data (i32.const 6273) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") + (data (i32.const 6305) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") + (data (i32.const 6337) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") + (data (i32.const 6369) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") + (data (i32.const 6401) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") + (data (i32.const 6433) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") + (data (i32.const 6465) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") + (data (i32.const 6497) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") + (data (i32.const 6529) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") + (data (i32.const 6561) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") + (data (i32.const 6593) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") + (data (i32.const 6625) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") + (data (i32.const 6657) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") + (data (i32.const 6689) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") + (data (i32.const 6722) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") + (data (i32.const 6754) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") + (data (i32.const 6785) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") + (data (i32.const 6817) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") + (data (i32.const 6849) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") + (data (i32.const 6881) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") + (data (i32.const 6913) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") + (data (i32.const 6945) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") + (data (i32.const 6978) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") + (data (i32.const 7009) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") + (data (i32.const 7041) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") + (data (i32.const 7073) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") + (data (i32.const 7105) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") + (data (i32.const 7137) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") + (data (i32.const 7169) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") + (data (i32.const 7201) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") + (data (i32.const 7233) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") + (data (i32.const 7265) "`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data (i32.const 9596) "\1c") + (data (i32.const 9608) "\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 9628) "\1c") + (data (i32.const 9640) "\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 9660) ",") + (data (i32.const 9672) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9708) ",") + (data (i32.const 9720) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9816) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + i32.const 100 + i32.ge_u + if local.get $0 local.get $2 - i32.const 1 + i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i32.const 10 + i32.const 100 i32.rem_u - i32.const 48 + i32.const 2 + i32.shl + i32.const 1820 i32.add - i32.store16 + i32.load + i32.store local.get $1 - i32.const 10 + i32.const 100 i32.div_u - local.tee $1 - br_if $do-continue|0 + local.set $1 end - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1408 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end - i32.const 0 + local.get $1 + i32.const 10 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $2 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1820 + i32.add + i32.load i32.store + else local.get $0 local.get $2 - local.get $3 - call $~lib/util/number/utoa_dec_simple + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 48 i32.add - global.set $~lib/memory/__stack_pointer + i32.store16 end - local.get $0 ) (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) (local $5 i32) @@ -2043,6 +2166,7 @@ i32.sub local.tee $9 i64.extend_i32_s + local.tee $0 i64.shl local.tee $10 i64.const 1 @@ -2051,12 +2175,57 @@ i64.and local.set $6 local.get $2 - local.get $9 - i64.extend_i32_s + local.get $0 i64.shr_u i32.wrap_i64 local.tee $1 - call $~lib/util/number/decimalCount32 + local.set $3 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end local.set $7 loop $while-continue|0 local.get $7 @@ -2186,7 +2355,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2144 + i32.const 9760 i32.add local.get $3 i32.const 65535 @@ -2221,7 +2390,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 3072 + i32.const 10688 i32.add i64.load32_u local.get $9 @@ -2231,28 +2400,12 @@ local.get $5 i32.const 1 i32.shl - i32.const 2142 + i32.const 9758 i32.add - local.tee $3 + local.tee $7 i32.load16_u - local.set $1 + local.set $3 loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $0 - i64.sub - local.get $0 - local.get $2 - i64.add - local.tee $6 - local.get $8 - i64.sub - i64.gt_u - local.get $6 - local.get $8 - i64.lt_u - select - i32.const 0 local.get $2 local.get $4 local.get $0 @@ -2263,12 +2416,30 @@ local.get $8 i64.lt_u select - select + if (result i32) + i32.const 1 + local.get $8 + local.get $0 + i64.sub + local.get $0 + local.get $2 + i64.add + local.tee $6 + local.get $8 + i64.sub + i64.gt_u + local.get $6 + local.get $8 + i64.lt_u + select + else + i32.const 0 + end if - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 + local.set $3 local.get $0 local.get $2 i64.add @@ -2276,8 +2447,8 @@ br $while-continue|3 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 return @@ -2309,7 +2480,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2144 + i32.const 9760 i32.add local.get $6 i32.wrap_i64 @@ -2347,7 +2518,7 @@ i32.sub i32.const 2 i32.shl - i32.const 3072 + i32.const 10688 i32.add i64.load32_u i64.mul @@ -2355,28 +2526,12 @@ local.get $5 i32.const 1 i32.shl - i32.const 2142 + i32.const 9758 i32.add - local.tee $3 + local.tee $7 i32.load16_u - local.set $1 + local.set $3 loop $while-continue|6 - i32.const 1 - local.get $2 - local.get $0 - i64.sub - local.get $0 - local.get $10 - i64.add - local.tee $6 - local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $6 - i64.gt_u - select - i32.const 0 local.get $10 local.get $4 local.get $0 @@ -2387,12 +2542,30 @@ local.get $2 i64.lt_u select - select + if (result i32) + i32.const 1 + local.get $2 + local.get $0 + i64.sub + local.get $0 + local.get $10 + i64.add + local.tee $6 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $6 + i64.gt_u + select + else + i32.const 0 + end if - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 + local.set $3 local.get $0 local.get $10 i64.add @@ -2400,1903 +2573,2945 @@ br $while-continue|6 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz + local.get $2 + i32.const 16 + i32.and if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 i32.const 1 - i32.shl - i32.const 2144 i32.add - i32.const 3145774 - i32.store + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.const 2 + i32.const 1 i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s - i32.const 0 - local.get $0 - local.get $2 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - i32.const 2144 - i32.add - i32.const 48 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 + local.tee $0 + local.get $1 i32.const 1 - i32.shl - i32.const 2144 i32.add - i32.const 3145774 - i32.store - local.get $2 - i32.const 2 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add - else - local.get $2 - i32.const 21 - i32.le_s - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $2 - i32.const 1 - i32.shl - i32.const 2144 - i32.add - local.tee $2 - i32.const 2 - i32.add - local.get $2 - i32.const 0 - local.get $1 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - i32.const 46 - i32.store16 - local.get $0 - i32.const 1 - i32.add - else - local.get $2 - i32.const 0 - i32.le_s - i32.const 0 - local.get $2 - i32.const -6 - i32.gt_s - select - if (result i32) - i32.const 2 - local.get $2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.const 2144 - i32.add - i32.const 2144 - local.get $0 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - i32.const 2144 - i32.const 3014704 - i32.store - i32.const 2 - local.set $1 - loop $for-loop|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - i32.const 2144 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - local.get $2 - i32.add - else - local.get $0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2146 - i32.const 101 - i32.store16 - i32.const 2148 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 - i32.lt_s - local.tee $0 - if - i32.const 0 - local.get $2 - i32.sub - local.set $2 - end - local.get $2 - local.get $2 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa_dec_simple - i32.const 2148 - i32.const 45 - i32.const 43 - local.get $0 - select - i32.store16 - local.get $1 - i32.const 2 - i32.add - else - i32.const 2148 - i32.const 2146 - local.get $0 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - i32.const 2146 - i32.const 46 - i32.store16 - local.get $1 - i32.const 2144 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $2 - i32.sub - local.set $2 - end - local.get $2 - local.get $2 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $2 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (result i32) - (local $0 i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i32) - i32.const -4 - global.set $~lib/util/number/_K - i32.const 2552 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 2984 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $0 - i64.const 4294967295 - i64.and - local.set $1 - local.get $0 - i64.const 32 - i64.shr_u - local.tee $0 - i64.const 31 - i64.shl - local.get $1 - i64.const 31 - i64.shl - local.get $1 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294967295 - i64.and - local.get $0 - 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 $0 - i64.const 31 - i64.shl - local.get $1 - i64.const 31 - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - i32.const 3 - i32.add - local.get $2 - local.get $4 - i32.const 3 - i32.add - local.get $2 - local.get $0 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $2 - i64.const 32 - i64.shr_u - i64.add - local.get $0 - i64.const 4294966784 - i64.mul - local.get $2 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - ) - (func $~lib/number/F64#toString (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 2144 - local.get $0 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-binary/Bar - block $resolve-binary/Foo - 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 $resolve-binary/Foo $resolve-binary/Bar $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 - return - end - unreachable - ) - (func $~start - call $start:resolve-binary - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 3676 - i32.lt_s - if - i32.const 20080 - i32.const 20128 + local.tee $0 + local.get $1 i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:resolve-binary - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 7 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 12 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 17 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 22 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 27 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 34 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 39 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 20060 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1552 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1584 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1728 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 1 - global.set $resolve-binary/a - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 48 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.add - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 53 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.sub - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 58 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.shl - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 63 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store offset=4 - local.get $0 - i32.const 3136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 69 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - global.set $resolve-binary/a - i32.const 2 - global.set $resolve-binary/a - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 75 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 3 - i32.rem_s - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 80 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.shl - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3168 - i32.store offset=4 - local.get $0 - i32.const 3168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 85 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.shr_s - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 90 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.shr_u - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 95 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - global.get $resolve-binary/a - i32.const 3 + local.get $2 + i32.const 8 i32.and - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 100 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 3 - i32.or - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3200 - i32.store offset=4 - local.get $0 - i32.const 3200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 105 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 2 - i32.xor - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 110 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3200 - i32.store offset=4 - local.get $0 - i32.const 3200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 117 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3232 - i32.store offset=4 - local.get $0 - i32.const 3232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 122 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz + local.get $2 + i32.const 4 + i32.and if - i32.const 0 - i32.const 1120 - i32.const 127 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end + local.get $2 i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz + i32.and if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end + local.get $2 i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz + i32.and if - i32.const 0 - i32.const 1120 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 end - i32.const 2 - local.set $0 - i32.const 2 - local.set $1 - i32.const 1 - local.set $2 - loop $while-continue|0 + ) + (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 $2 - i32.mul - local.get $2 local.get $1 - i32.const 1 - i32.and - select - local.set $2 + 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 1 - i32.shr_u - local.set $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.mul - local.set $0 - br $while-continue|0 - end - end - local.get $2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3168 - i32.store offset=4 - local.get $0 - i32.const 3168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store offset=4 - local.get $0 - i32.const 3136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3136 - i32.store offset=4 - local.get $0 - i32.const 3136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - i32.const 4 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3168 - i32.store offset=4 - local.get $0 - i32.const 3168 - call $~lib/string/String.__eq + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 165 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.const 9760 + i32.add + i32.const 3145774 + i32.store + local.get $0 + i32.const 2 + i32.add + return end - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 + local.get $1 + i32.add + local.tee $2 + i32.const 21 + i32.le_s + i32.const 0 local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 170 + local.get $2 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.shl + i32.const 9760 + i32.add + i32.const 48 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3200 - i32.store offset=4 - local.get $0 - i32.const 3200 - call $~lib/string/String.__eq - i32.eqz - if + i32.shl + i32.const 9760 + i32.add + i32.const 3145774 + i32.store + local.get $2 + i32.const 2 + i32.add + else + local.get $2 + i32.const 21 + i32.le_s i32.const 0 - i32.const 1120 - i32.const 175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if + local.get $2 i32.const 0 - i32.const 1120 - i32.const 182 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + if (result i32) + local.get $2 + i32.const 1 + i32.shl + i32.const 9760 + i32.add + local.tee $3 + i32.const 2 + i32.add + local.get $3 + i32.const 0 + local.get $1 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + i32.const 46 + i32.store16 + local.get $0 + i32.const 1 + i32.add + else + local.get $2 + i32.const 0 + i32.le_s + i32.const 0 + local.get $2 + i32.const -6 + i32.gt_s + select + if (result i32) + i32.const 2 + local.get $2 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.const 9760 + i32.add + i32.const 9760 + local.get $0 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + i32.const 9760 + i32.const 3014704 + i32.store + i32.const 2 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + i32.const 9760 + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.get $3 + i32.add + else + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 9762 + i32.const 101 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $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.set $0 + i32.const 9764 + local.get $1 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + i32.const 9764 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + i32.const 9764 + i32.const 9762 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + i32.sub + call $~lib/memory/memory.copy + i32.const 9762 + i32.const 46 + i32.store16 + local.get $1 + i32.const 9760 + i32.add + local.tee $3 + i32.const 101 + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $5 + if (result i32) + i32.const 0 + local.get $1 + i32.sub + else + local.get $1 + end + 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 $1 + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $5 + select + i32.store16 offset=4 + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.add + end + end + end end - i32.const 3 - call $~lib/number/I32#toString - local.set $0 + ) + (func $~lib/number/F64#toString (result i32) + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3200 - i32.store offset=4 - local.get $0 - i32.const 3200 - call $~lib/string/String.__eq - i32.eqz + i32.const 11292 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 187 + i32.const 27696 + i32.const 27744 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 192 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end i32.const 0 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1408 - i32.store offset=4 + i32.const -4 + global.set $~lib/util/number/_K + i32.const 10168 + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 10600 + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $0 + i64.const 32 + i64.shr_u + local.set $2 local.get $0 - i32.const 1408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer + i64.const 4294967295 + i64.and + local.tee $0 + i64.const 31 + i64.shl local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.set $1 + local.get $2 + i64.const 31 + i64.shl local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer + i64.const 31 + i64.shl + local.tee $5 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + i64.const 4294967295 + i64.and + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $4 + i32.const 3 + i32.add + local.get $2 + i64.const 31 + i64.shl + local.get $1 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + i64.const 4294967295 + i64.and + local.get $2 + 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.tee $1 + local.get $4 + i32.const 3 + i32.add + local.get $1 + local.get $2 + i64.const 2147483647 + i64.mul local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 + i64.const 2147483647 + i64.mul local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 4294966784 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $1 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + i64.const 4294966784 + i64.mul + local.get $1 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + call $~lib/util/number/genDigits + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 + local.get $3 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 + i32.const 9760 + local.get $4 + call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $resolve-binary/foo - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3264 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3264 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3264 - i32.store offset=4 - i32.const 3264 - i32.const 3264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 275 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-binary/Bar + block $resolve-binary/Foo + 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 $resolve-binary/Foo $resolve-binary/Bar $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 + return end + unreachable + ) + (func $~start + call $start:resolve-binary + ) + (func $start:resolve-binary + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3296 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3296 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3296 - i32.store offset=4 - i32.const 3296 - i32.const 3296 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 11292 + 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 i32.const 0 - i32.const 1120 - i32.const 280 + i32.store offset=16 + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 27676 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1556 + i32.const 1552 + i32.store + i32.const 1560 + i32.const 1552 + i32.store + i32.const 1552 + global.set $~lib/rt/itcms/pinSpace + i32.const 1588 + i32.const 1584 + i32.store + i32.const 1592 + i32.const 1584 + i32.store + i32.const 1584 + global.set $~lib/rt/itcms/toSpace + i32.const 1732 + i32.const 1728 + i32.store + i32.const 1736 + i32.const 1728 + i32.store + i32.const 1728 + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + global.set $resolve-binary/a + i32.const 1 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 1 + i32.add + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 1 + i32.sub + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.store offset=4 - i32.const 3328 - i32.const 3328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 285 + i32.shl + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10752 + i32.store offset=4 + local.get $0 + i32.const 10752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + global.set $resolve-binary/a + i32.const 2 + global.set $resolve-binary/a + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 3 + i32.rem_s + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3360 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3360 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3360 - i32.store offset=4 - i32.const 3360 - i32.const 3360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 290 + i32.shl + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10784 + i32.store offset=4 + local.get $0 + i32.const 10784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3392 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3392 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3392 - i32.store offset=4 - i32.const 3392 - i32.const 3392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 295 + i32.shr_s + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3424 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3424 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3424 - i32.store offset=4 - i32.const 3424 - i32.const 3424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 300 + i32.shr_u + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 3 + i32.and + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 3 + i32.or + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10816 + i32.store offset=4 + local.get $0 + i32.const 10816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 2 + i32.xor + global.set $resolve-binary/a + global.get $resolve-binary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10816 + i32.store offset=4 + local.get $0 + i32.const 10816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10848 + i32.store offset=4 + local.get $0 + i32.const 10848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3456 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3456 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3456 - i32.store offset=4 - i32.const 3456 - i32.const 3456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 305 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10784 + i32.store offset=4 + local.get $0 + i32.const 10784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10752 + i32.store offset=4 + local.get $0 + i32.const 10752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10752 + i32.store offset=4 + local.get $0 + i32.const 10752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10784 + i32.store offset=4 + local.get $0 + i32.const 10784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3488 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3488 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3488 - i32.store offset=4 - i32.const 3488 - i32.const 3488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 310 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10816 + i32.store offset=4 + local.get $0 + i32.const 10816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3520 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3520 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3520 - i32.store offset=4 - i32.const 3520 - i32.const 3520 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10816 + i32.store offset=4 + local.get $0 + i32.const 10816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1120 - i32.const 315 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 1408 + i32.store offset=4 + local.get $0 + i32.const 1408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3392 + i32.store offset=4 + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3424 + i32.store offset=4 + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 11292 + 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 0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $resolve-binary/foo + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 10880 + i32.store offset=8 + local.get $0 + i32.const 10880 + i32.store + local.get $0 + i32.const 10880 + i32.store offset=4 + i32.const 10880 + i32.const 10880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 10912 + i32.store offset=8 + local.get $0 + i32.const 10912 + i32.store + local.get $0 + i32.const 10912 + i32.store offset=4 + i32.const 10912 + i32.const 10912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 10944 + i32.store offset=8 + local.get $0 + i32.const 10944 + i32.store + local.get $0 + i32.const 10944 + i32.store offset=4 + i32.const 10944 + i32.const 10944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 10976 + i32.store offset=8 + local.get $0 + i32.const 10976 + i32.store + local.get $0 + i32.const 10976 + i32.store offset=4 + i32.const 10976 + i32.const 10976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 11008 + i32.store offset=8 + local.get $0 + i32.const 11008 + i32.store + local.get $0 + i32.const 11008 + i32.store offset=4 + i32.const 11008 + i32.const 11008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 11040 + i32.store offset=8 + local.get $0 + i32.const 11040 + i32.store + local.get $0 + i32.const 11040 + i32.store offset=4 + i32.const 11040 + i32.const 11040 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 11072 + i32.store offset=8 + local.get $0 + i32.const 11072 + i32.store + local.get $0 + i32.const 11072 + i32.store offset=4 + i32.const 11072 + i32.const 11072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 11104 + i32.store offset=8 + local.get $0 + i32.const 11104 + i32.store + local.get $0 + i32.const 11104 + i32.store offset=4 + i32.const 11104 + i32.const 11104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 310 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 11136 + i32.store offset=8 + local.get $0 + i32.const 11136 + i32.store + local.get $0 + i32.const 11136 + i32.store offset=4 + i32.const 11136 + i32.const 11136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 11168 + i32.store offset=8 + local.get $0 + i32.const 11168 + i32.store + local.get $0 + i32.const 11168 + i32.store offset=4 + i32.const 11168 + i32.const 11168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 320 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 11200 + i32.store offset=8 + local.get $0 + i32.const 11200 + i32.store + local.get $0 + i32.const 11200 + i32.store offset=4 + i32.const 11200 + i32.const 11200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 325 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/foo + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + i32.const 11232 + i32.store offset=8 + local.get $0 + i32.const 11232 + i32.store + local.get $0 + i32.const 11232 + i32.store offset=4 + i32.const 11232 + i32.const 11232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $resolve-binary/Bar#constructor + global.set $resolve-binary/bar + call $resolve-binary/Bar#constructor + global.set $resolve-binary/bar2 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-binary/bar + i32.store offset=4 + local.get $0 + global.get $resolve-binary/bar2 + local.tee $1 + i32.store offset=8 + local.get $1 + global.set $resolve-binary/bar + local.get $0 + global.get $resolve-binary/bar + local.tee $0 + i32.store + local.get $0 + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 348 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/bar + global.get $resolve-binary/bar2 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 27696 + i32.const 27744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3552 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3552 - i32.store + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3552 - i32.store offset=4 - i32.const 3552 - i32.const 3552 - call $~lib/string/String.__eq - i32.eqz + i32.const 11292 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 320 + i32.const 27696 + i32.const 27744 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3584 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3584 - i32.store offset=4 - i32.const 3584 - i32.const 3584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 325 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/foo - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3616 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store offset=4 - i32.const 3616 - i32.const 3616 - call $~lib/string/String.__eq + local.get $0 i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 330 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1408 + return end - call $resolve-binary/Bar#constructor - global.set $resolve-binary/bar - call $resolve-binary/Bar#constructor - global.set $resolve-binary/bar2 - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/bar - i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/bar2 - local.tee $0 - i32.store offset=8 + i32.const 0 local.get $0 - global.set $resolve-binary/bar - global.get $~lib/memory/__stack_pointer - global.get $resolve-binary/bar + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + 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 - global.get $resolve-binary/bar2 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 348 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/bar - global.get $resolve-binary/bar2 - i32.ne + local.get $2 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $1 if - i32.const 0 - i32.const 1120 - i32.const 353 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $resolve-binary/Bar#constructor (result i32) (local $0 i32) @@ -4304,11 +5519,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 11292 + i32.lt_s + if + i32.const 27696 + i32.const 27744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.const 4 call $~lib/rt/itcms/__new diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 8ae6c33db6..3798bab8a1 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1,13 +1,13 @@ (module - (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 $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 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 $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -42,30 +42,33 @@ (data (i32.const 1832) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 + local.get $0 + i32.const 3 + i32.and i32.eqz if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u if local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 + i32.load + i32.store + local.get $0 local.get $1 - i32.const 1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 i32.add local.set $1 - br $for-loop|0 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 end end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) + local.get $2 + i32.const 8 + i32.and + if local.get $0 - local.get $3 - i32.const 1 - i32.shl + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 i32.add - local.tee $0 - i32.const 2 + local.set $1 + local.get $0 + i32.const 8 i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 local.get $0 - i32.const 46 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u i32.store16 local.get $1 - i32.const 1 + i32.const 2 i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - local.get $3 - i32.const -6 - i32.gt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 + i32.const 3 + i32.and i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 i32.sub - local.set $0 + br_table $case0|2 $case1|2 $case2|2 $break|2 end + local.get $1 + i32.load + local.set $5 local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - call $~lib/util/number/decimalCount32 i32.const 1 i32.add local.tee $0 - call $~lib/util/number/utoa_dec_simple local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 + i32.const 1 i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.tee $4 i32.const 2 i32.add + local.set $0 local.get $1 - i32.const 1 - i32.shl - local.tee $2 + local.tee $3 i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 i32.add + local.set $1 + local.get $4 local.get $3 - i32.const 1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u if - i32.const 0 local.get $0 - i32.sub + local.get $1 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + 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 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 local.get $3 - select - i32.store16 offset=4 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 local.get $0 local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.const 2 + local.set $1 + local.get $0 + i32.const 16 i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 end end end end - ) - (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i32) - (local $7 i32) + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + 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/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 + 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 2744 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2744 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|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 2744 + 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 2744 + 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/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + i32.eqz + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $4 + i32.const 21 + i32.le_s + i32.const 0 + local.get $1 + local.get $4 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $4 + i32.const 2 + i32.add + else + local.get $4 + i32.const 21 + i32.le_s + i32.const 0 + local.get $4 + i32.const 0 + i32.gt_s + select + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $4 + i32.const 0 + i32.le_s + i32.const 0 + local.get $4 + i32.const -6 + i32.gt_s + select + if (result i32) + local.get $0 + i32.const 2 + local.get $4 + i32.sub + local.tee $5 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $5 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if (result i32) + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $3 + i32.const 4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + 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.set $1 + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 offset=4 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + call $~lib/memory/memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $3 + i32.const 4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $5 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + 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 $2 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $5 + select + i32.store16 offset=4 + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.add + end + end + end + end + ) + (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) (local $8 i32) - (local $9 i64) + (local $9 i32) (local $10 i64) (local $11 i64) + (local $12 i64) local.get $0 f64.const 0 f64.lt @@ -2751,19 +3728,19 @@ local.get $0 end i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $7 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $3 + local.get $2 i64.const 4503599627370495 i64.and i64.add @@ -2772,51 +3749,52 @@ i64.shl i64.const 1 i64.add - local.tee $3 + local.tee $2 i64.clz i32.wrap_i64 - local.set $2 - local.get $3 + local.set $4 local.get $2 + local.get $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $6 + local.get $7 i32.const 1 - local.get $6 + local.get $7 select i32.const 1075 i32.sub - local.tee $6 + local.tee $7 i32.const 1 i32.sub - local.get $2 + local.get $4 i32.sub - local.set $2 + local.set $4 local.get $1 local.get $1 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $7 + local.tee $5 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $6 local.get $7 + local.get $5 i32.sub - local.get $2 + local.get $4 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $2 + local.get $4 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp + local.tee $4 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -2825,9 +3803,9 @@ f64.add local.tee $0 i32.trunc_f64_s - local.tee $2 + local.tee $5 local.get $0 - local.get $2 + local.get $5 f64.convert_i32_s f64.ne i32.add @@ -2835,18 +3813,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $5 i32.const 3 i32.shl - local.tee $7 + local.tee $9 i32.sub global.set $~lib/util/number/_K - local.get $7 + local.get $9 i32.const 1832 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 2528 @@ -2854,52 +3832,52 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $4 + local.tee $3 i64.const 32 i64.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i64.const 4294967295 i64.and - local.tee $4 + local.tee $3 global.get $~lib/util/number/_frc_plus - local.tee $5 + local.tee $6 i64.const 32 i64.shr_u - local.tee $10 + local.tee $11 i64.mul - local.get $4 - local.get $5 + local.get $3 + local.get $6 i64.const 4294967295 i64.and - local.tee $11 + local.tee $12 i64.mul i64.const 32 i64.shr_u i64.add - local.set $5 + local.set $6 local.get $8 i32.const 1 i32.shl i32.const 1776 i32.add - local.get $3 + local.get $2 local.get $1 local.get $1 i64.clz i32.wrap_i64 - local.tee $2 + local.tee $5 i64.extend_i32_s i64.shl local.tee $1 i64.const 32 i64.shr_u - local.tee $9 + local.tee $10 i64.mul - local.get $4 - local.get $9 + local.get $3 + local.get $10 i64.mul - local.get $4 + local.get $3 local.get $1 i64.const 4294967295 i64.and @@ -2908,14 +3886,14 @@ i64.const 32 i64.shr_u i64.add - local.tee $9 + local.tee $10 i64.const 32 i64.shr_u i64.add local.get $1 - local.get $3 + local.get $2 i64.mul - local.get $9 + local.get $10 i64.const 4294967295 i64.and i64.add @@ -2925,24 +3903,24 @@ i64.shr_u i64.add global.get $~lib/util/number/_exp_pow - local.tee $7 - local.get $6 - local.get $2 + local.tee $9 + local.get $7 + local.get $5 i32.sub i32.add i32.const -64 i32.sub - local.get $3 - local.get $10 + local.get $2 + local.get $11 i64.mul - local.get $5 + local.get $6 i64.const 32 i64.shr_u i64.add - local.get $3 - local.get $11 + local.get $2 + local.get $12 i64.mul - local.get $5 + local.get $6 i64.const 4294967295 i64.and i64.add @@ -2954,27 +3932,27 @@ i64.const 1 i64.sub local.tee $1 - local.get $7 - global.get $~lib/util/number/_exp + local.get $4 + local.get $9 i32.add i32.const -64 i32.sub local.get $1 - local.get $3 + local.get $2 global.get $~lib/util/number/_frc_minus local.tee $1 i64.const 32 i64.shr_u - local.tee $5 + local.tee $6 i64.mul - local.get $4 - local.get $5 + local.get $3 + local.get $6 i64.mul - local.get $4 + local.get $3 local.get $1 i64.const 4294967295 i64.and - local.tee $4 + local.tee $3 i64.mul i64.const 32 i64.shr_u @@ -2983,8 +3961,8 @@ i64.const 32 i64.shr_u i64.add + local.get $2 local.get $3 - local.get $4 i64.mul local.get $1 i64.const 4294967295 @@ -3015,7 +3993,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 4852 + i32.lt_s + if + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3113,7 +4101,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -3127,36 +4115,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -3169,33 +4162,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -3249,7 +4242,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 4852 + i32.lt_s + if + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3264,479 +4267,555 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3136 + i32.const 3536 local.set $0 br $__inlined_func$~lib/util/number/utoa32 end - local.get $1 - call $~lib/util/number/decimalCount32 - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new + local.get $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.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + 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 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:resolve-elementaccess + ) + (func $start:resolve-elementaccess + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4852 + 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 + memory.size + i32.const 16 + i32.shl + i32.const 21236 + 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 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4852 + 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 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $resolve-elementaccess/arr + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/arr + local.tee $0 + i32.store + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/arr + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + call $~lib/number/F32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3168 + i32.store offset=4 + local.get $0 + i32.const 3168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3200 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/arr + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + call $~lib/number/F32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3280 + i32.store offset=4 + local.get $0 + i32.const 3280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3200 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $resolve-elementaccess/arr + local.tee $0 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 10 + f32.add + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + call $~lib/number/F32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3312 + i32.store offset=4 + local.get $0 + i32.const 3312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3200 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $resolve-elementaccess/arr + local.tee $0 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 10 + f32.add + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 21 + f32.ne + if + i32.const 0 + i32.const 3200 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4852 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.tee $0 + i32.const 0 i32.store local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - 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 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $invalid - end - return - end - return - end - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 4852 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - i32.load - local.tee $0 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - return - end - local.get $0 - i32.load - local.tee $0 - if + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - ) - (func $~start - call $start:resolve-elementaccess - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 3396 - i32.lt_s - if - i32.const 19808 - i32.const 19856 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:resolve-elementaccess - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 19780 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1280 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1312 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1456 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $resolve-elementaccess/arr - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2768 - i32.store offset=4 - local.get $0 - i32.const 2768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2800 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2880 - i32.store offset=4 - local.get $0 - i32.const 2880 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2800 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $1 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 10 - f32.add - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2912 - i32.store offset=4 - local.get $0 - i32.const 2912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2800 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $0 - i32.store - local.get $0 - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $0 - i32.store offset=4 - i32.const 0 - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 10 - f32.add - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 21 - f32.ne - if i32.const 0 - i32.const 2800 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $resolve-elementaccess/buf + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/buf local.tee $0 i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $resolve-elementaccess/buf - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $0 - i32.store - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - call $~lib/number/U8#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3264 - i32.store offset=4 - local.get $0 - i32.const 3264 - call $~lib/string/String.__eq - i32.eqz - if + local.get $0 i32.const 0 - i32.const 2800 - i32.const 28 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - call $~lib/number/U8#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3296 - i32.store offset=4 - local.get $0 - i32.const 3296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2800 - i32.const 33 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/buf + local.tee $0 + i32.store + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $1 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 10 - i32.add - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - call $~lib/number/U8#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.store offset=4 - local.get $0 - i32.const 3328 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/buf + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 - i32.const 2800 - i32.const 38 + call $~lib/typedarray/Uint8Array#__get + call $~lib/number/U8#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4720 + i32.store offset=4 + local.get $0 + i32.const 4720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3200 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/buf + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $0 - i32.store - local.get $0 - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $0 - i32.store offset=4 - i32.const 0 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 10 - i32.add - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $resolve-elementaccess/buf - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 21 - i32.ne - if + call $~lib/typedarray/Uint8Array#__get + call $~lib/number/U8#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4752 + i32.store offset=4 + local.get $0 + i32.const 4752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3200 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $resolve-elementaccess/buf + local.tee $0 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 - i32.const 2800 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 10 + i32.add + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + call $~lib/number/U8#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4784 + i32.store offset=4 + local.get $0 + i32.const 4784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3200 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $resolve-elementaccess/buf + local.tee $0 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 10 + i32.add + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/buf + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 21 + i32.ne + if + i32.const 0 + i32.const 3200 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3744,7 +4823,17 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 4852 + i32.lt_s + if + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i64.const 0 i64.store diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index f73276880e..3bb48f9b65 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_i32_=>_none (func (param i32 i32))) (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))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -33,11 +33,14 @@ (data (i32.const 1704) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 1772) "<") (data (i32.const 1784) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1836) "\\") - (data (i32.const 1848) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1932) "\1c") - (data (i32.const 1944) "\01\00\00\00\04\00\00\004\002") - (data (i32.const 1968) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1836) "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") + (data (i32.const 2236) "\1c\04") + (data (i32.const 2248) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 3292) "\\") + (data (i32.const 3304) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 3388) "\1c") + (data (i32.const 3400) "\01\00\00\00\04\00\00\004\002") + (data (i32.const 3424) "\04\00\00\00 \00\00\00\00\00\00\00 ") (table $0 4 funcref) (elem (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -50,7 +53,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18388)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19844)) (export "memory" (memory $0)) (start $~start) (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) @@ -68,15 +71,6 @@ i32.const 42 i32.add ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -84,7 +78,9 @@ call $~lib/rt/itcms/__visit i32.const 1456 call $~lib/rt/itcms/__visit - i32.const 1856 + i32.const 2256 + call $~lib/rt/itcms/__visit + i32.const 3312 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -124,170 +120,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1520 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18388 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 19844 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1520 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 3424 + i32.load + i32.gt_u + if + i32.const 1648 + i32.const 1712 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 3428 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1968 - i32.load - i32.gt_u - if - i32.const 1648 - i32.const 1712 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1972 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -575,12 +555,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -830,10 +810,10 @@ if unreachable end - i32.const 18400 + i32.const 19856 i32.const 0 i32.store - i32.const 19968 + i32.const 21424 i32.const 0 i32.store loop $for-loop|0 @@ -844,7 +824,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 18400 + i32.const 19856 i32.add i32.const 0 i32.store offset=4 @@ -862,7 +842,7 @@ i32.add i32.const 2 i32.shl - i32.const 18400 + i32.const 19856 i32.add i32.const 0 i32.store offset=96 @@ -880,13 +860,13 @@ br $for-loop|0 end end - i32.const 18400 - i32.const 19972 + i32.const 19856 + i32.const 21428 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 18400 + i32.const 19856 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -934,7 +914,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -965,7 +950,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 18388 + i32.const 19844 i32.lt_u if local.get $0 @@ -997,7 +982,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1055,7 +1045,7 @@ unreachable end local.get $0 - i32.const 18388 + i32.const 19844 i32.lt_u if local.get $0 @@ -1077,8 +1067,8 @@ local.get $0 i32.const 4 i32.add - local.tee $1 - i32.const 18388 + local.tee $0 + i32.const 19844 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1087,19 +1077,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1116,11 +1106,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1123,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1154,28 +1149,28 @@ i32.shr_u local.set $1 else - i32.const 31 local.get $1 - i32.const 1 - i32.const 27 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 local.get $1 i32.clz i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1272,10 +1267,79 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 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.ge_u @@ -1287,50 +1351,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub + local.get $5 local.get $1 i32.const 12 i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock + 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 $1 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $1 + end i32.const 4 memory.size - local.tee $1 + local.tee $3 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $5 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1338,18 +1406,18 @@ i32.and i32.const 16 i32.shr_u - local.set $3 - local.get $1 + local.set $4 local.get $3 - local.get $1 + local.get $4 local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1357,18 +1425,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $5 + local.get $3 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 + local.get $5 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1379,8 +1447,8 @@ unreachable end end - local.get $2 local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1393,13 +1461,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $5 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load local.set $3 - local.get $2 + local.get $1 i32.const 4 i32.add i32.const 15 @@ -1415,51 +1483,51 @@ local.get $3 i32.const -4 i32.and - local.get $2 + local.get $1 i32.sub local.tee $4 i32.const 16 i32.ge_u if - local.get $1 local.get $2 + local.get $1 local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 local.get $1 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $1 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $1 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $2 local.get $3 i32.const -2 i32.and i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $2 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 @@ -1469,125 +1537,164 @@ 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 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $4 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $4 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $4 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $4 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $4 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $4 i32.const 0 - local.get $0 + local.get $4 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $3 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 $2 + local.tee $4 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $4 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store offset=4 - local.get $0 + local.get $3 i32.const 0 i32.store offset=8 - local.get $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 $2 + local.get $4 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store offset=12 - local.get $0 + local.get $3 i32.const 0 i32.store offset=16 - local.get $0 + local.get $3 i32.const 0 i32.store offset=20 - local.get $0 + local.get $3 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 4 i32.and i32.const 24 @@ -1595,7 +1702,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $4 local.get $1 i32.sub local.set $1 @@ -1628,102 +1735,7 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 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 - global.get $~lib/rt/itcms/total - 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 - local.get $1 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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 + local.get $5 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1758,22 +1770,6 @@ unreachable ) (func $~start - call $start:resolve-function-expression - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 2004 - i32.lt_s - if - i32.const 18416 - i32.const 18464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:resolve-function-expression (local $0 i32) (local $1 i32) (local $2 i32) @@ -1783,291 +1779,408 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 2 - i32.const 1056 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1168 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 6 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3460 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 2 + i32.const 1056 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 18388 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1568 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1600 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1744 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - i32.const 1200 - i32.load - call_indirect $0 (type $i32_=>_i32) - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz + i32.const 1168 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 42 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1424 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 + i32.const 0 + i32.const 1088 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 + memory.size + i32.const 16 + i32.shl + i32.const 19844 i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $2 - i32.const 10 - i32.ge_u i32.const 1 - i32.add - 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 - local.get $2 - i32.const 100 - i32.lt_u - select - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $2 - i32.const 10000000 - i32.lt_u - select - local.get $2 - i32.const 100000 - i32.lt_u - select - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__new - local.tee $0 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1572 + i32.const 1568 i32.store - loop $do-continue|0 - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $2 - i32.const 10 - i32.div_u - local.tee $2 - br_if $do-continue|0 - end - local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/pinSpace + i32.const 1604 + i32.const 1600 + i32.store + i32.const 1608 + i32.const 1600 + i32.store + i32.const 1600 + global.set $~lib/rt/itcms/toSpace + i32.const 1748 + i32.const 1744 + i32.store + i32.const 1752 + i32.const 1744 + i32.store + i32.const 1744 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 1200 + i32.load + call_indirect $0 (type $i32_=>_i32) + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1952 - i32.store offset=4 - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 - local.get $0 - i32.const 1952 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $0 - i32.eqz - br_if $__inlined_func$~lib/string/String.__eq - drop + global.get $~lib/memory/__stack_pointer + i32.const 3460 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 1948 - i32.load - i32.const 1 - i32.shr_u - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - block $__inlined_func$~lib/util/string/compareImpl (result i32) - i32.const 1952 - local.set $3 - local.get $0 - local.tee $2 - i32.const 7 - i32.and + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $1 i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1424 + local.set $1 + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $1 - local.tee $0 - i32.const 4 - i32.ge_u + i32.sub + local.get $1 + local.get $1 + i32.const 31 + i32.shr_u + local.tee $4 select - if - loop $do-continue|01 + 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 $4 + i32.add + local.tee $2 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $1 local.get $2 - i64.load + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $3 - 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 $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|01 - end + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - loop $while-continue|1 + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $0 - local.tee $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + else + local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $0 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + 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 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 3408 + i32.store offset=4 + block $__inlined_func$~lib/string/String.__eq (result i32) + i32.const 1 + local.get $1 + i32.const 3408 + i32.eq + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $1 + i32.eqz + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 3404 + i32.load + i32.const 1 + i32.shr_u + i32.ne + br_if $__inlined_func$~lib/string/String.__eq + drop + block $__inlined_func$~lib/util/string/compareImpl (result i32) + i32.const 3408 + local.set $4 local.get $1 + local.tee $0 + i32.const 7 + i32.and + i32.eqz + i32.const 0 + local.get $2 + local.tee $1 + i32.const 4 + i32.ge_u + select if - local.get $3 - i32.load16_u - local.tee $1 + loop $do-continue|0 + local.get $0 + i64.load + local.get $4 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $4 + i32.const 8 + i32.add + local.set $4 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 local.get $2 - i32.load16_u - local.tee $4 - i32.ne if local.get $4 - local.get $1 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl + i32.load16_u + local.tee $2 + local.get $0 + i32.load16_u + local.tee $3 + i32.ne + if + local.get $3 + local.get $2 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $while-continue|1 end - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|1 end + i32.const 0 end - i32.const 0 + i32.eqz end i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 19872 + i32.const 19920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index ddec423331..557397022e 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (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_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) @@ -44,15 +44,6 @@ (export "Outer.inner" (func $export:resolve-nested/Outer.inner)) (export "outer" (func $export:resolve-nested/outer)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -98,170 +89,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17876 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17876 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -549,12 +524,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -908,7 +883,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -971,7 +951,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1051,7 +1036,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17876 i32.ge_u if @@ -1061,19 +1046,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1090,11 +1075,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1092,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1174,44 +1164,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + memory.size + local.tee $1 i32.const 16 - i32.shr_u - local.set $1 + i32.shl + i32.const 4 + i32.sub local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.const 65563 + 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 $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1219,15 +1261,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1254,22 +1296,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1278,32 +1320,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1315,70 +1357,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1436,172 +1442,244 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1492 - i32.lt_s - if - i32.const 17904 - i32.const 17952 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $export:resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer + i32.const 1492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1492 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1492 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 0 i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:resolve-nested/Outer.Inner.evenInner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1492 + i32.lt_s + if + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $6 local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $6 local.get $2 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $6 local.get $3 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $6 local.get $4 i32.store offset=16 - global.get $~lib/memory/__stack_pointer + local.get $6 local.get $5 i32.store offset=20 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) (func $export:resolve-nested/Outer.inner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1492 + i32.lt_s + if + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $5 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $5 local.get $2 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $5 local.get $3 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $5 local.get $4 i32.store offset=16 - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) (func $export:resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1492 + i32.lt_s + if + i32.const 17904 + i32.const 17952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 local.get $2 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index 5ec45ba2d7..213dd87b4b 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result 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_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -34,15 +34,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17860)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -94,170 +85,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17860 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17860 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -545,12 +520,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -904,7 +879,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -967,7 +947,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1047,7 +1032,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17860 i32.ge_u if @@ -1057,19 +1042,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1086,11 +1071,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1100,10 +1088,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1170,23 +1160,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $1 i32.load offset=1568 i32.ne i32.shl @@ -1196,18 +1238,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1215,17 +1257,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1236,7 +1278,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1250,10 +1292,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1264,14 +1306,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1281,26 +1323,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1310,7 +1352,47 @@ i32.and i32.store end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1343,11 +1425,22 @@ ) (func $~start (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1359,28 +1452,49 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $resolve-new/Foo#constructor global.set $resolve-new/foo call $resolve-new/Foo#constructor local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~stack_check + (func $resolve-new/Foo#constructor (result i32) + (local $0 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 1476 i32.lt_s @@ -1392,92 +1506,12 @@ call $~lib/builtins/abort unreachable end - ) - (func $resolve-new/Foo#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 3 - i32.store offset=12 - local.get $0 i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + i32.store local.get $0 - i32.const 20 - i32.add + call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index ae7fef3b2b..4c653347f5 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1,12 +1,12 @@ (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_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 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))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "|") @@ -25,36 +25,39 @@ (data (i32.const 1528) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 1596) "<") (data (i32.const 1608) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1660) "\\") - (data (i32.const 1672) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1756) "\1c") - (data (i32.const 1768) "\01\00\00\00\02\00\00\001") - (data (i32.const 1788) "L") - (data (i32.const 1800) "\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") - (data (i32.const 1868) "\1c") - (data (i32.const 1880) "\01\00\00\00\04\00\00\001\001") - (data (i32.const 1900) "\1c") - (data (i32.const 1912) "\01\00\00\00\02\00\00\002") - (data (i32.const 1932) "\1c") - (data (i32.const 1944) "\01\00\00\00\04\00\00\002\002") - (data (i32.const 1964) "\1c") - (data (i32.const 1976) "\01\00\00\00\02\00\00\003") - (data (i32.const 1996) "\1c") - (data (i32.const 2008) "\01\00\00\00\04\00\00\003\003") - (data (i32.const 2028) "\1c") - (data (i32.const 2040) "\01\00\00\00\02\00\00\004") - (data (i32.const 2060) "\1c") - (data (i32.const 2072) "\01\00\00\00\02\00\00\005") - (data (i32.const 2092) "\1c") - (data (i32.const 2104) "\01\00\00\00\04\00\00\005\005") - (data (i32.const 2124) "\1c") - (data (i32.const 2136) "\01\00\00\00\02\00\00\007") - (data (i32.const 2156) "\1c") - (data (i32.const 2168) "\01\00\00\00\02\00\00\006") - (data (i32.const 2188) "\1c") - (data (i32.const 2200) "\01\00\00\00\02\00\00\008") - (data (i32.const 2224) "\04\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 2252) " ") + (data (i32.const 1660) "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") + (data (i32.const 2060) "\1c\04") + (data (i32.const 2072) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 3116) "\\") + (data (i32.const 3128) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 3212) "\1c") + (data (i32.const 3224) "\01\00\00\00\02\00\00\001") + (data (i32.const 3244) "L") + (data (i32.const 3256) "\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") + (data (i32.const 3324) "\1c") + (data (i32.const 3336) "\01\00\00\00\04\00\00\001\001") + (data (i32.const 3356) "\1c") + (data (i32.const 3368) "\01\00\00\00\02\00\00\002") + (data (i32.const 3388) "\1c") + (data (i32.const 3400) "\01\00\00\00\04\00\00\002\002") + (data (i32.const 3420) "\1c") + (data (i32.const 3432) "\01\00\00\00\02\00\00\003") + (data (i32.const 3452) "\1c") + (data (i32.const 3464) "\01\00\00\00\04\00\00\003\003") + (data (i32.const 3484) "\1c") + (data (i32.const 3496) "\01\00\00\00\02\00\00\004") + (data (i32.const 3516) "\1c") + (data (i32.const 3528) "\01\00\00\00\02\00\00\005") + (data (i32.const 3548) "\1c") + (data (i32.const 3560) "\01\00\00\00\04\00\00\005\005") + (data (i32.const 3580) "\1c") + (data (i32.const 3592) "\01\00\00\00\02\00\00\007") + (data (i32.const 3612) "\1c") + (data (i32.const 3624) "\01\00\00\00\02\00\00\006") + (data (i32.const 3644) "\1c") + (data (i32.const 3656) "\01\00\00\00\02\00\00\008") + (data (i32.const 3680) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 3708) " ") (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)) @@ -65,18 +68,9 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18644)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20100)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -84,7 +78,9 @@ call $~lib/rt/itcms/__visit i32.const 1280 call $~lib/rt/itcms/__visit - i32.const 1680 + i32.const 2080 + call $~lib/rt/itcms/__visit + i32.const 3136 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -124,170 +120,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18644 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 20100 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1344 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 3680 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 3684 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2224 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 2228 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -575,12 +555,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -830,10 +810,10 @@ if unreachable end - i32.const 18656 + i32.const 20112 i32.const 0 i32.store - i32.const 20224 + i32.const 21680 i32.const 0 i32.store loop $for-loop|0 @@ -844,7 +824,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 18656 + i32.const 20112 i32.add i32.const 0 i32.store offset=4 @@ -862,7 +842,7 @@ i32.add i32.const 2 i32.shl - i32.const 18656 + i32.const 20112 i32.add i32.const 0 i32.store offset=96 @@ -880,13 +860,13 @@ br $for-loop|0 end end - i32.const 18656 - i32.const 20228 + i32.const 20112 + i32.const 21684 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 18656 + i32.const 20112 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -934,7 +914,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -965,7 +950,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 18644 + i32.const 20100 i32.lt_u if local.get $0 @@ -997,7 +982,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1055,7 +1045,7 @@ unreachable end local.get $0 - i32.const 18644 + i32.const 20100 i32.lt_u if local.get $0 @@ -1077,8 +1067,8 @@ local.get $0 i32.const 4 i32.add - local.tee $1 - i32.const 18644 + local.tee $0 + i32.const 20100 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1087,19 +1077,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1116,11 +1106,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1123,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1154,28 +1149,28 @@ i32.shr_u local.set $1 else - i32.const 31 local.get $1 - i32.const 1 - i32.const 27 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 local.get $1 i32.clz i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1272,11 +1267,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1287,50 +1351,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1338,18 +1406,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1357,18 +1425,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1380,7 +1448,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1393,12 +1461,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1412,54 +1480,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1469,125 +1537,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1595,7 +1702,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1628,219 +1735,7 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - select - local.tee $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $1 - i32.const 100 - i32.lt_u - select - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $1 - i32.const 10000000 - i32.lt_u - select - local.get $1 - i32.const 100000 - i32.lt_u - select - local.get $2 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - loop $do-continue|0 - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 - end - local.get $2 - 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 - local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1868,7 +1763,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -1882,36 +1777,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -1924,33 +1824,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -1990,19 +1890,6 @@ (func $~start call $start:resolve-propertyaccess ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 2260 - i32.lt_s - if - i32.const 18672 - i32.const 18720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $start:resolve-propertyaccess (local $0 i32) (local $1 i32) @@ -2010,310 +1897,570 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 18644 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1424 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1568 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1776 - i32.store offset=4 - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 1808 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.store offset=4 - local.get $0 - i32.const 1920 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 22 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1952 - i32.store offset=4 - local.get $0 - i32.const 1952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1984 - i32.store offset=4 - local.get $0 - i32.const 1984 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 33 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2016 - i32.store offset=4 - local.get $0 - i32.const 2016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.store offset=4 - local.get $0 - i32.const 2048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2080 - i32.store offset=4 - local.get $0 - i32.const 2080 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 55 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2112 - i32.store offset=4 - local.get $0 - i32.const 2112 - call $~lib/string/String.__eq - i32.eqz - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3716 + 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.const 1808 - i32.const 78 + i32.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 20100 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2144 - i32.store offset=4 - local.get $0 - i32.const 2144 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 84 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 6 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load - call $~lib/number/I32#toString - local.set $0 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3232 + i32.store offset=4 + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3344 + i32.store offset=4 + local.get $0 + i32.const 3344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3376 + i32.store offset=4 + local.get $0 + i32.const 3376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 22 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3408 + i32.store offset=4 + local.get $0 + i32.const 3408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3440 + i32.store offset=4 + local.get $0 + i32.const 3440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 33 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3472 + i32.store offset=4 + local.get $0 + i32.const 3472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3504 + i32.store offset=4 + local.get $0 + i32.const 3504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3536 + i32.store offset=4 + local.get $0 + i32.const 3536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 55 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3568 + i32.store offset=4 + local.get $0 + i32.const 3568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3600 + i32.store offset=4 + local.get $0 + i32.const 3600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 3716 + 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.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 6 + i32.store + 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=8 + 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 + local.get $1 + i32.const 3632 + i32.store offset=4 + local.get $0 + i32.const 3632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3664 + i32.store offset=4 + local.get $0 + i32.const 3664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 97 + 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 20128 + i32.const 20176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2176 - i32.store offset=4 - local.get $0 - i32.const 2176 - call $~lib/string/String.__eq - i32.eqz + i32.const 3716 + i32.lt_s if - i32.const 0 - i32.const 1808 - i32.const 92 - i32.const 3 + i32.const 20128 + i32.const 20176 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8 - call $~lib/number/I32#toString - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2208 - i32.store offset=4 local.get $0 - i32.const 2208 - call $~lib/string/String.__eq i32.eqz if - i32.const 0 - i32.const 1808 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + return end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $4 + select + 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 $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $1 + local.set $0 + local.get $2 + local.set $1 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $2 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $3 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $2 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $3 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $3 + local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $3 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $4 + if + local.get $3 + 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 $3 ) ) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 0f8cf28191..0514e281b8 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1,12 +1,12 @@ (module (type $i32_=>_i32 (func (param 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 $none_=>_none (func)) (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_=>_none (func (param i32 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))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -26,34 +26,37 @@ (data (i32.const 1528) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 1596) "<") (data (i32.const 1608) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1660) "\\") - (data (i32.const 1672) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1756) "\1c") - (data (i32.const 1768) "\01\00\00\00\02\00\00\001") - (data (i32.const 1788) "<") - (data (i32.const 1800) "\01\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1852) "\1c") - (data (i32.const 1864) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1884) "\1c") - (data (i32.const 1896) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1916) ",") - (data (i32.const 1928) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1964) ",") - (data (i32.const 1976) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 2072) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + i32.const 100 + i32.ge_u + if local.get $0 local.get $2 - i32.const 1 + i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i32.const 10 + i32.const 100 i32.rem_u - i32.const 48 + i32.const 2 + i32.shl + i32.const 1660 i32.add - i32.store16 + i32.load + i32.store local.get $1 - i32.const 10 + i32.const 100 i32.div_u - local.tee $1 - br_if $do-continue|0 + local.set $1 end - ) - (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 + i32.const 10 + i32.ge_u if + local.get $0 + local.get $2 + i32.const 2 + i32.sub i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1660 + 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/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.eqz + i32.const 1 + local.get $0 + select + if + i32.const 0 + return end local.get $0 i32.const 20 @@ -1820,7 +1871,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -1834,36 +1885,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -1876,33 +1932,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -1929,6 +1985,7 @@ i32.sub local.tee $9 i64.extend_i32_s + local.tee $0 i64.shl local.tee $10 i64.const 1 @@ -1937,12 +1994,57 @@ i64.and local.set $6 local.get $2 - local.get $9 - i64.extend_i32_s + local.get $0 i64.shr_u i32.wrap_i64 local.tee $1 - call $~lib/util/number/decimalCount32 + local.set $3 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end local.set $7 loop $while-continue|0 local.get $7 @@ -2072,7 +2174,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2016 + i32.const 3472 i32.add local.get $3 i32.const 65535 @@ -2107,7 +2209,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 2944 + i32.const 4400 i32.add i64.load32_u local.get $9 @@ -2117,28 +2219,12 @@ local.get $5 i32.const 1 i32.shl - i32.const 2014 + i32.const 3470 i32.add - local.tee $3 + local.tee $7 i32.load16_u - local.set $1 + local.set $3 loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $0 - i64.sub - local.get $0 - local.get $2 - i64.add - local.tee $6 - local.get $8 - i64.sub - i64.gt_u - local.get $6 - local.get $8 - i64.lt_u - select - i32.const 0 local.get $2 local.get $4 local.get $0 @@ -2149,12 +2235,30 @@ local.get $8 i64.lt_u select - select + if (result i32) + i32.const 1 + local.get $8 + local.get $0 + i64.sub + local.get $0 + local.get $2 + i64.add + local.tee $6 + local.get $8 + i64.sub + i64.gt_u + local.get $6 + local.get $8 + i64.lt_u + select + else + i32.const 0 + end if - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 + local.set $3 local.get $0 local.get $2 i64.add @@ -2162,8 +2266,8 @@ br $while-continue|3 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 return @@ -2195,7 +2299,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2016 + i32.const 3472 i32.add local.get $6 i32.wrap_i64 @@ -2233,7 +2337,7 @@ i32.sub i32.const 2 i32.shl - i32.const 2944 + i32.const 4400 i32.add i64.load32_u i64.mul @@ -2241,28 +2345,12 @@ local.get $5 i32.const 1 i32.shl - i32.const 2014 + i32.const 3470 i32.add - local.tee $3 + local.tee $7 i32.load16_u - local.set $1 + local.set $3 loop $while-continue|6 - i32.const 1 - local.get $2 - local.get $0 - i64.sub - local.get $0 - local.get $10 - i64.add - local.tee $6 - local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $6 - i64.gt_u - select - i32.const 0 local.get $10 local.get $4 local.get $0 @@ -2273,12 +2361,30 @@ local.get $2 i64.lt_u select - select + if (result i32) + i32.const 1 + local.get $2 + local.get $0 + i64.sub + local.get $0 + local.get $10 + i64.add + local.tee $6 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $6 + i64.gt_u + select + else + i32.const 0 + end if - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 + local.set $3 local.get $0 local.get $10 i64.add @@ -2286,409 +2392,1279 @@ br $while-continue|6 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end end + br $break|2 end - end - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 2016 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $0 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 + local.get $1 + i32.load + local.set $5 local.get $0 - local.get $3 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - i32.const 2016 - i32.add - i32.const 48 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $3 - i32.const 1 - i32.shl - i32.const 2016 - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $3 - i32.const 1 - i32.shl - i32.const 2016 - i32.add local.tee $3 - i32.const 2 + i32.const 1 i32.add - local.get $3 - i32.const 0 + local.set $0 local.get $1 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - i32.const 46 - i32.store16 - local.get $0 + local.tee $4 i32.const 1 i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 + local.set $1 local.get $3 - i32.const -6 - i32.gt_s - select - if (result i32) - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.const 2016 - i32.add - i32.const 2016 - local.get $0 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - i32.const 2016 - i32.const 3014704 - i32.store - i32.const 2 - local.set $1 - loop $for-loop|1 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 local.get $3 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - i32.const 2016 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - local.get $3 - i32.add - else - local.get $0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2018 - i32.const 101 - i32.store16 - i32.const 2020 - local.get $3 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $0 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 + i32.const 8 + i32.shr_u local.get $1 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa_dec_simple - i32.const 2020 - i32.const 45 - i32.const 43 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 local.get $0 - select - i32.store16 + local.get $3 + i32.const 8 + i32.shr_u local.get $1 - i32.const 2 - i32.add - else - i32.const 2020 - i32.const 2018 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 local.get $0 - i32.const 1 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 i32.shl - local.tee $1 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - i32.const 2018 - i32.const 46 - i32.store16 + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 local.get $1 - i32.const 2016 + i32.const 16 i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 - local.get $1 - local.tee $2 - i32.const 4 + local.set $1 + local.get $0 + i32.const 16 i32.add - local.get $3 - i32.const 1 + local.set $0 + local.get $2 + i32.const 16 i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $1 + local.set $2 + br $while-continue|5 + end + end + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + 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/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + local.get $0 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + i32.const 3145774 + i32.store + local.get $0 + i32.const 2 + i32.add + return + end + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + i32.const 0 + local.get $0 + local.get $3 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + i32.const 48 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $3 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + if (result i32) + local.get $3 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + local.tee $3 + i32.const 2 + i32.add + local.get $3 + i32.const 0 + local.get $1 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + i32.const 46 + i32.store16 + local.get $0 + i32.const 1 + i32.add + else + local.get $3 + i32.const 0 + i32.le_s + i32.const 0 + local.get $3 + i32.const -6 + i32.gt_s + select + if (result i32) + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + i32.const 3472 + local.get $0 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + i32.const 3472 + i32.const 3014704 + i32.store + i32.const 2 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.get $3 + i32.add + else + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 3474 + i32.const 101 + i32.store16 + local.get $3 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $1 + 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.set $0 + i32.const 3476 + local.get $1 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + i32.const 3476 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + local.get $0 + i32.const 2 + i32.add + else + i32.const 3476 + i32.const 3474 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + i32.sub + call $~lib/memory/memory.copy + i32.const 3474 + i32.const 46 + i32.store16 + local.get $1 + i32.const 3472 + i32.add + local.tee $1 + i32.const 101 + i32.store16 offset=2 + local.get $1 + local.tee $2 + i32.const 4 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $5 + if + i32.const 0 + local.get $1 i32.sub local.set $1 end local.get $1 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 local.get $1 - call $~lib/util/number/decimalCount32 + local.get $3 i32.const 1 i32.add local.tee $1 - call $~lib/util/number/utoa_dec_simple + call $~lib/util/number/utoa32_dec_lut local.get $2 i32.const 45 i32.const 43 - local.get $3 + local.get $5 select i32.store16 offset=4 local.get $0 @@ -2701,122 +3677,6 @@ end end ) - (func $~lib/util/number/dtoa_core (result i32) - (local $0 i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 f64) - i32.const -4 - global.set $~lib/util/number/_K - i32.const 2424 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 2856 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $3 - i64.const 4294967295 - i64.and - local.set $1 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - i64.const 31 - i64.shl - local.get $1 - i64.const 31 - i64.shl - local.get $1 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $2 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - 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 - i64.const 1 - i64.sub - local.set $0 - local.get $3 - i64.const 31 - i64.shl - local.get $1 - i64.const 31 - i64.shl - local.tee $2 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - i32.const 1 - i32.add - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.get $0 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $0 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $0 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - ) (func $start:resolve-ternary~anonymous|0 (param $0 i32) (result i32) local.get $0 i32.const 1 @@ -2829,222 +3689,351 @@ ) (func $resolve-ternary/g1 (param $0 i32) (result i32) local.get $0 - i32.const 3 - i32.add - ) - (func $resolve-ternary/g2 (param $0 i32) (result i32) - local.get $0 - i32.const 4 - i32.add - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28i32%29=>i32> - 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 $~lib/function/Function<%28i32%29=>i32> $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 - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - call $start:resolve-ternary - ) - (func $~stack_check - 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 - ) - (func $start:resolve-ternary - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 19572 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1424 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1568 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - call $~lib/util/number/decimalCount32 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 1 - local.get $1 - call $~lib/util/number/utoa_dec_simple - 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 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1776 - i32.store offset=4 - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 3 + i32.add + ) + (func $resolve-ternary/g2 (param $0 i32) (result i32) local.get $0 - i32.const 2016 - local.get $1 - 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.get $0 - i32.store + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + 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 $~lib/function/Function<%28i32%29=>i32> $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 + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 f64) global.get $~lib/memory/__stack_pointer - i32.const 3008 - i32.store offset=4 - local.get $0 - i32.const 3008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 13 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4644 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 21028 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3040 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 2 - i32.ne - if + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4644 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1808 - i32.const 24 + i32.store + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3104 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 35 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3072 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 3 - i32.ne - if + call $~lib/util/number/utoa32_dec_lut + 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 + local.get $1 + i32.const 3232 + i32.store offset=4 + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 4644 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1808 - i32.const 43 + i32.store + i32.const -4 + global.set $~lib/util/number/_K + i32.const 3880 + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 4312 + 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 + i64.const 32 + i64.shr_u + local.tee $5 + i64.const 31 + i64.shl + local.get $3 + i64.const 31 + i64.shl + local.get $3 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.tee $4 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + 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 + local.get $3 + i64.const 31 + i64.shl + local.tee $4 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + i64.const 4294967295 + i64.and + 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 - call $~lib/builtins/abort - unreachable + i32.add + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.get $2 + local.get $5 + i64.const 2147483647 + i64.mul + local.get $3 + i64.const 2147483647 + i64.mul + local.get $3 + i64.const 4294966784 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $2 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + i64.const 4294966784 + i64.mul + local.get $2 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + call $~lib/util/number/genDigits + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 3472 + local.get $1 + 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.get $0 + i32.store + local.get $1 + i32.const 4464 + i32.store offset=4 + local.get $0 + i32.const 4464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4496 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4560 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4528 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 21056 + i32.const 21104 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index cc227f63c1..371b6b7b0e 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -1,12 +1,12 @@ (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_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 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))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "|") @@ -25,40 +25,43 @@ (data (i32.const 1528) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 1596) "<") (data (i32.const 1608) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1660) "\\") - (data (i32.const 1672) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1756) "\1c") - (data (i32.const 1768) "\01\00\00\00\04\00\00\00-\001") - (data (i32.const 1788) "<") - (data (i32.const 1800) "\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1852) "\1c") - (data (i32.const 1864) "\01\00\00\00\02\00\00\001") - (data (i32.const 1884) "\1c") - (data (i32.const 1896) "\01\00\00\00\02\00\00\002") - (data (i32.const 1916) "\1c") - (data (i32.const 1928) "\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 1948) "\1c") - (data (i32.const 1960) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 1980) "\1c") - (data (i32.const 1992) "\01\00\00\00\04\00\00\00-\002") - (data (i32.const 2012) "\1c") - (data (i32.const 2024) "\01\00\00\00\02\00\00\00+") - (data (i32.const 2044) "\1c") - (data (i32.const 2056) "\01\00\00\00\02\00\00\00-") - (data (i32.const 2076) "\1c") - (data (i32.const 2088) "\01\00\00\00\02\00\00\00!") - (data (i32.const 2108) "\1c") - (data (i32.const 2120) "\01\00\00\00\02\00\00\00~") - (data (i32.const 2140) "\1c") - (data (i32.const 2152) "\01\00\00\00\06\00\00\00+\00+\00i") - (data (i32.const 2172) "\1c") - (data (i32.const 2184) "\01\00\00\00\06\00\00\00-\00-\00i") - (data (i32.const 2204) "\1c") - (data (i32.const 2216) "\01\00\00\00\06\00\00\00i\00+\00+") - (data (i32.const 2236) "\1c") - (data (i32.const 2248) "\01\00\00\00\06\00\00\00i\00-\00-") - (data (i32.const 2272) "\05\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 2300) " \00\00\00\00\00\00\00 ") + (data (i32.const 1660) "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") + (data (i32.const 2060) "\1c\04") + (data (i32.const 2072) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 3116) "\\") + (data (i32.const 3128) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 3212) "\1c") + (data (i32.const 3224) "\01\00\00\00\04\00\00\00-\001") + (data (i32.const 3244) "<") + (data (i32.const 3256) "\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") + (data (i32.const 3308) "\1c") + (data (i32.const 3320) "\01\00\00\00\02\00\00\001") + (data (i32.const 3340) "\1c") + (data (i32.const 3352) "\01\00\00\00\02\00\00\002") + (data (i32.const 3372) "\1c") + (data (i32.const 3384) "\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 3404) "\1c") + (data (i32.const 3416) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 3436) "\1c") + (data (i32.const 3448) "\01\00\00\00\04\00\00\00-\002") + (data (i32.const 3468) "\1c") + (data (i32.const 3480) "\01\00\00\00\02\00\00\00+") + (data (i32.const 3500) "\1c") + (data (i32.const 3512) "\01\00\00\00\02\00\00\00-") + (data (i32.const 3532) "\1c") + (data (i32.const 3544) "\01\00\00\00\02\00\00\00!") + (data (i32.const 3564) "\1c") + (data (i32.const 3576) "\01\00\00\00\02\00\00\00~") + (data (i32.const 3596) "\1c") + (data (i32.const 3608) "\01\00\00\00\06\00\00\00+\00+\00i") + (data (i32.const 3628) "\1c") + (data (i32.const 3640) "\01\00\00\00\06\00\00\00-\00-\00i") + (data (i32.const 3660) "\1c") + (data (i32.const 3672) "\01\00\00\00\06\00\00\00i\00+\00+") + (data (i32.const 3692) "\1c") + (data (i32.const 3704) "\01\00\00\00\06\00\00\00i\00-\00-") + (data (i32.const 3728) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 3756) " \00\00\00\00\00\00\00 ") (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)) @@ -73,18 +76,9 @@ (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) (global $resolve-unary/bar (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18700)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20156)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -104,7 +98,9 @@ call $~lib/rt/itcms/__visit i32.const 1280 call $~lib/rt/itcms/__visit - i32.const 1680 + i32.const 2080 + call $~lib/rt/itcms/__visit + i32.const 3136 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -144,170 +140,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18700 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 20156 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1344 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 3728 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 3732 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2272 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 2276 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -595,12 +575,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -850,10 +830,10 @@ if unreachable end - i32.const 18704 + i32.const 20160 i32.const 0 i32.store - i32.const 20272 + i32.const 21728 i32.const 0 i32.store loop $for-loop|0 @@ -864,7 +844,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 18704 + i32.const 20160 i32.add i32.const 0 i32.store offset=4 @@ -882,7 +862,7 @@ i32.add i32.const 2 i32.shl - i32.const 18704 + i32.const 20160 i32.add i32.const 0 i32.store offset=96 @@ -900,13 +880,13 @@ br $for-loop|0 end end - i32.const 18704 - i32.const 20276 + i32.const 20160 + i32.const 21732 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 18704 + i32.const 20160 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -954,7 +934,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -985,7 +970,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 18700 + i32.const 20156 i32.lt_u if local.get $0 @@ -1017,7 +1002,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1075,7 +1065,7 @@ unreachable end local.get $0 - i32.const 18700 + i32.const 20156 i32.lt_u if local.get $0 @@ -1097,8 +1087,8 @@ local.get $0 i32.const 4 i32.add - local.tee $1 - i32.const 18700 + local.tee $0 + i32.const 20156 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1107,19 +1097,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1136,11 +1126,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1150,10 +1143,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1174,28 +1169,28 @@ i32.shr_u local.set $1 else - i32.const 31 local.get $1 - i32.const 1 - i32.const 27 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 local.get $1 i32.clz i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870910 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1292,11 +1287,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1307,50 +1371,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1358,18 +1426,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1377,18 +1445,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1400,7 +1468,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1413,12 +1481,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1432,54 +1500,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1489,125 +1557,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1615,7 +1722,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1648,219 +1755,7 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - select - local.tee $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $1 - i32.const 100 - i32.lt_u - select - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $1 - i32.const 10000000 - i32.lt_u - select - local.get $1 - i32.const 100000 - i32.lt_u - select - local.get $2 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - loop $do-continue|0 - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 - end - local.get $2 - 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 - local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1888,7 +1783,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -1902,36 +1797,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -1944,33 +1844,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -2013,588 +1913,824 @@ (func $~start call $start:resolve-unary ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 2316 - i32.lt_s - if - i32.const 18720 - i32.const 18768 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $start:resolve-unary (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - memory.size - i32.const 16 - i32.shl - i32.const 18700 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1424 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1568 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const -1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1776 - i32.store offset=4 - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1872 - i32.store offset=4 - local.get $0 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const 1 - i32.add - global.set $resolve-unary/a - global.get $resolve-unary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1904 - i32.store offset=4 - local.get $0 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const 1 - i32.sub - global.set $resolve-unary/a - global.get $resolve-unary/a - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1872 - i32.store offset=4 - local.get $0 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.const 1936 - global.get $resolve-unary/a - select - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=4 - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3772 + 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 i32.const 0 - i32.const 1808 - i32.const 23 + i32.store offset=16 + memory.size + i32.const 16 + i32.shl + i32.const 20156 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.const 1968 - global.get $resolve-unary/a - select - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 28 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + i32.const -1 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3232 + i32.store offset=4 + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const -1 - i32.xor - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store offset=4 - local.get $0 - i32.const 2000 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 33 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3328 + i32.store offset=4 + local.get $0 + i32.const 3328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/b - local.tee $0 - i32.const 1 - i32.add - global.set $resolve-unary/b - local.get $0 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1872 - i32.store offset=4 - local.get $0 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 41 + i32.add + global.set $resolve-unary/a + global.get $resolve-unary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3360 + i32.store offset=4 + local.get $0 + i32.const 3360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/b - local.tee $0 - i32.const 1 - i32.sub - global.set $resolve-unary/b - local.get $0 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1904 - i32.store offset=4 - local.get $0 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 46 + i32.sub + global.set $resolve-unary/a + global.get $resolve-unary/a + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3328 + i32.store offset=4 + local.get $0 + i32.const 3328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 3424 + i32.const 3392 + global.get $resolve-unary/a + select + local.tee $1 + i32.store + local.get $0 + i32.const 3424 + i32.store offset=4 + local.get $1 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 3392 + i32.const 3424 + global.get $resolve-unary/a + select + local.tee $1 + i32.store + local.get $0 + i32.const 3392 + i32.store offset=4 + local.get $1 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.const -1 + i32.xor + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3456 + i32.store offset=4 + local.get $0 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/b + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $resolve-unary/foo - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store offset=4 - i32.const 2032 - i32.const 2032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 91 + i32.add + global.set $resolve-unary/b + local.get $0 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3328 + i32.store offset=4 + local.get $0 + i32.const 3328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/b + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2064 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2064 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2064 - i32.store offset=4 - i32.const 2064 - i32.const 2064 - call $~lib/string/String.__eq - i32.eqz - if + i32.sub + global.set $resolve-unary/b + local.get $0 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3360 + i32.store offset=4 + local.get $0 + i32.const 3360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 3772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1808 - i32.const 96 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - local.tee $0 - i32.store offset=4 - local.get $0 - global.set $resolve-unary/foo - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - local.tee $0 - i32.store - local.get $0 - global.get $resolve-unary/foo - i32.ne - if + i32.store + local.get $0 i32.const 0 - i32.const 1808 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - local.tee $0 - i32.store offset=4 - local.get $0 - global.set $resolve-unary/foo - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - local.tee $0 - i32.store - local.get $0 - global.get $resolve-unary/foo - i32.ne - if + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/foo + i32.store offset=12 + local.get $0 + i32.const 3488 + i32.store offset=8 + local.get $0 + i32.const 3488 + i32.store + local.get $0 + i32.const 3488 + i32.store offset=4 + i32.const 3488 + i32.const 3488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/foo + i32.store offset=12 + local.get $0 + i32.const 3520 + i32.store offset=8 + local.get $0 + i32.const 3520 + i32.store + local.get $0 + i32.const 3520 + i32.store offset=4 + i32.const 3520 + i32.const 3520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/foo + local.tee $1 + i32.store offset=4 + local.get $1 + global.set $resolve-unary/foo + local.get $0 + global.get $resolve-unary/foo + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/foo + local.tee $1 + i32.store offset=4 + local.get $1 + global.set $resolve-unary/foo + local.get $0 + global.get $resolve-unary/foo + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/foo + i32.store offset=12 + local.get $0 + i32.const 3552 + i32.store offset=8 + local.get $0 + i32.const 3552 + i32.store + local.get $0 + i32.const 3552 + i32.store offset=4 + i32.const 3552 + i32.const 3552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/foo + i32.store offset=12 + local.get $0 + i32.const 3584 + i32.store offset=8 + local.get $0 + i32.const 3584 + i32.store + local.get $0 + i32.const 3584 + i32.store offset=4 + i32.const 3584 + i32.const 3584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $resolve-unary/foo + local.tee $0 + i32.store offset=16 + local.get $0 + global.set $resolve-unary/foo + local.get $1 + local.get $0 + i32.store + local.get $0 + global.get $resolve-unary/foo + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $resolve-unary/foo + local.tee $0 + i32.store offset=16 + local.get $0 + global.set $resolve-unary/foo + local.get $1 + local.get $0 + i32.store + local.get $0 + global.get $resolve-unary/foo + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 3772 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1808 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2096 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2096 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2096 - i32.store offset=4 - i32.const 2096 - i32.const 2096 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $0 i32.const 0 - i32.const 1808 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $resolve-unary/bar + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/bar + i32.store offset=12 + local.get $0 + i32.const 3616 + i32.store offset=8 + local.get $0 + i32.const 3616 + i32.store + local.get $0 + i32.const 3616 + i32.store offset=4 + i32.const 3616 + i32.const 3616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/bar + i32.store offset=12 + local.get $0 + i32.const 3648 + i32.store offset=8 + local.get $0 + i32.const 3648 + i32.store + local.get $0 + i32.const 3648 + i32.store offset=4 + i32.const 3648 + i32.const 3648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/bar + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + i32.const 3680 + i32.store offset=8 + local.get $0 + i32.const 3680 + i32.store + local.get $0 + i32.const 3680 + i32.store offset=4 + i32.const 3680 + i32.const 3680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $resolve-unary/bar + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + i32.const 3712 + i32.store offset=8 + local.get $0 + i32.const 3712 + i32.store + local.get $0 + i32.const 3712 + i32.store offset=4 + i32.const 3712 + i32.const 3712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 20176 + i32.const 20224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2128 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2128 - i32.store + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2128 - i32.store offset=4 - i32.const 2128 - i32.const 2128 - call $~lib/string/String.__eq - i32.eqz + i32.const 3772 + i32.lt_s if - i32.const 0 - i32.const 1808 - i32.const 116 + i32.const 20176 + i32.const 20224 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - local.tee $0 - i32.store offset=16 - local.get $0 - global.set $resolve-unary/foo - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store local.get $0 - global.get $resolve-unary/foo - i32.ne + i32.eqz if - i32.const 0 - i32.const 1808 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + return end global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/foo - local.tee $0 - i32.store offset=16 + i32.const 0 local.get $0 - global.set $resolve-unary/foo - global.get $~lib/memory/__stack_pointer + i32.sub local.get $0 - i32.store local.get $0 - global.get $resolve-unary/foo - i32.ne - if - i32.const 0 - i32.const 1808 - i32.const 126 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 31 + i32.shr_u + local.tee $4 + select + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $resolve-unary/bar - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/bar - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2160 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2160 + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2160 - i32.store offset=4 - i32.const 2160 - i32.const 2160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1808 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.set $0 + local.get $2 + local.set $1 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $2 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $3 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $2 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/bar - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2192 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2192 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2192 - i32.store offset=4 - i32.const 2192 - i32.const 2192 - call $~lib/string/String.__eq - i32.eqz + local.get $0 + i32.const 100 + i32.ge_u if - i32.const 0 - i32.const 1808 - i32.const 156 + local.get $3 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 end - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/bar - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2224 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2224 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2224 - i32.store offset=4 - i32.const 2224 - i32.const 2224 - call $~lib/string/String.__eq - i32.eqz + i32.const 10 + i32.ge_u if - i32.const 0 - i32.const 1808 - i32.const 161 + local.get $3 + local.get $1 + i32.const 2 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $3 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer - global.get $resolve-unary/bar - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2256 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2256 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2256 - i32.store offset=4 - i32.const 2256 - i32.const 2256 - call $~lib/string/String.__eq - i32.eqz + local.get $4 if - i32.const 0 - i32.const 1808 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) ) diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index 035c1ff28c..8c79510673 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -2,10 +2,10 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (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 $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -38,15 +38,6 @@ (global $~started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -92,170 +83,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17908 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17908 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -543,12 +518,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -857,100 +832,10 @@ i32.const 17920 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/free (param $0 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - local.get $0 - i32.const 17908 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - global.get $rt/finalize/expect - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $rt/finalize/ran - local.get $0 - i32.const 4 - i32.add - local.tee $1 - i32.const 17908 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 4 - i32.sub - local.set $0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - select - if (result i32) - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - call $~lib/rt/tlsf/insertBlock - end - end - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -992,7 +877,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1055,7 +945,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1113,15 +1008,105 @@ unreachable end local.get $0 - call $~lib/rt/itcms/free + i32.const 17908 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + global.get $rt/finalize/expect + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $rt/finalize/ran + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 17908 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.tee $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 + end + end i32.const 10 return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1188,23 +1173,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $1 i32.load offset=1568 i32.ne i32.shl @@ -1214,18 +1251,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1233,17 +1270,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1254,7 +1291,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1268,10 +1305,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1282,14 +1319,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1299,26 +1336,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1328,11 +1365,85 @@ i32.and i32.store end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) - (func $start:rt/finalize + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/finalize/Ref + 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 $rt/finalize/Ref $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 + ) + (func $~start (local $0 i32) - (local $1 i32) + global.get $~started + if + return + end + i32.const 1 + global.set $~started memory.size i32.const 16 i32.shl @@ -1341,14 +1452,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1366,82 +1492,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 3 - i32.store offset=12 - local.get $0 i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + i32.store local.get $0 - i32.const 20 - i32.add + call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1494,42 +1549,4 @@ unreachable end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $rt/finalize/Ref - 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 $rt/finalize/Ref $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 - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:rt/finalize - ) ) diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 80e2b88973..b4caab817c 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -1,12 +1,11 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -43,15 +42,6 @@ (global $~started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -133,170 +123,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17940 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17940 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1504 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -584,12 +558,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -943,7 +917,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1006,7 +985,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1086,7 +1070,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17940 i32.ge_u if @@ -1096,19 +1080,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1125,11 +1109,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1139,10 +1126,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1209,25 +1198,77 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + 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.const 65563 i32.add @@ -1235,18 +1276,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1254,15 +1295,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1289,22 +1330,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1313,32 +1354,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1350,70 +1391,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1427,43 +1432,23 @@ i32.const 20 i32.add ) - (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=12 - local.tee $0 - i32.const 1504 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load offset=4 - local.tee $0 - br_if $do-continue|0 - end - end - i32.const 0 - ) (func $start:rt/instanceof (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1475,14 +1460,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 call $rt/instanceof/Animal#constructor @@ -1498,9 +1498,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|0 + i32.const 1 + local.get $0 + i32.const 4 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|0 + end + end + i32.const 0 + end else i32.const 0 end @@ -1518,9 +1544,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof0 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|01 + i32.const 1 + local.get $0 + i32.const 5 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof0 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|01 + end + end + i32.const 0 + end else i32.const 0 end @@ -1538,9 +1590,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof2 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|03 + i32.const 1 + local.get $0 + i32.const 4 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof2 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|03 + end + end + i32.const 0 + end else i32.const 0 end @@ -1559,9 +1637,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof4 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|05 + i32.const 1 + local.get $0 + i32.const 5 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof4 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|05 + end + end + i32.const 0 + end else i32.const 0 end @@ -1579,9 +1683,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof6 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|07 + i32.const 1 + local.get $0 + i32.const 4 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof6 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|07 + end + end + i32.const 0 + end else i32.const 0 end @@ -1600,9 +1730,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof8 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|09 + i32.const 1 + local.get $0 + i32.const 5 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof8 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|09 + end + end + i32.const 0 + end else i32.const 0 end @@ -1639,9 +1795,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof10 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|011 + i32.const 1 + local.get $0 + i32.const 4 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof10 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|011 + end + end + i32.const 0 + end else i32.const 0 end @@ -1659,9 +1841,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof12 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|013 + i32.const 1 + local.get $0 + i32.const 5 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof12 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|013 + end + end + i32.const 0 + end else i32.const 0 end @@ -1689,9 +1897,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof14 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|015 + i32.const 1 + local.get $0 + i32.const 4 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof14 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|015 + end + end + i32.const 0 + end else i32.const 0 end @@ -1710,9 +1944,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof16 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|017 + i32.const 1 + local.get $0 + i32.const 5 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof16 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|017 + end + end + i32.const 0 + end else i32.const 0 end @@ -1740,9 +2000,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof18 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|019 + i32.const 1 + local.get $0 + i32.const 4 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof18 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|019 + end + end + i32.const 0 + end else i32.const 0 end @@ -1761,9 +2047,35 @@ i32.store local.get $0 if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof + block $__inlined_func$~lib/rt/__instanceof20 (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|021 + i32.const 1 + local.get $0 + i32.const 5 + i32.eq + br_if $__inlined_func$~lib/rt/__instanceof20 + drop + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|021 + end + end + i32.const 0 + end else i32.const 0 end @@ -1777,24 +2089,25 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1843,7 +2156,11 @@ global.set $~started call $start:rt/instanceof ) - (func $~stack_check + (func $rt/instanceof/Animal#constructor (param $0 i32) (result 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 1556 i32.lt_s @@ -1855,13 +2172,6 @@ call $~lib/builtins/abort unreachable end - ) - (func $rt/instanceof/Animal#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1885,7 +2195,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1915,11 +2235,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 5 call $~lib/rt/itcms/__new local.tee $0 diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index ab75059b7f..5ad142a355 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -1,12 +1,12 @@ (module (type $i32_=>_none (func (param i32))) - (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_=>_none (func (param i32 i32 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))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -42,15 +42,6 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -100,26 +91,6 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) (func $~lib/rt/itcms/Object#unlink (param $0 i32) (local $1 i32) local.get $0 @@ -164,31 +135,17 @@ i32.store offset=8 local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:next - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 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 $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -213,15 +170,14 @@ global.get $~lib/rt/itcms/toSpace local.set $2 local.get $0 - local.tee $1 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.const 1568 i32.load i32.gt_u @@ -233,7 +189,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1572 @@ -248,11 +204,29 @@ else i32.const 2 end - local.set $0 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $2 local.get $0 - call $~lib/rt/itcms/Object#linkTo + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -559,12 +533,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -918,7 +892,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -981,7 +960,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1061,7 +1045,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17980 i32.ge_u if @@ -1071,19 +1055,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1100,11 +1084,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1114,10 +1101,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1138,28 +1127,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1256,11 +1245,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1271,50 +1329,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1322,18 +1384,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1341,18 +1403,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1364,7 +1426,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1377,12 +1439,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1396,54 +1458,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1453,125 +1515,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1579,7 +1680,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1612,105 +1713,12 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) + (local $2 i32) + (local $3 i32) local.get $0 if local.get $0 @@ -1732,14 +1740,35 @@ end local.get $1 call $~lib/rt/itcms/Object#unlink - local.get $1 global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 i32.const 3 - call $~lib/rt/itcms/Object#linkTo + 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 end local.get $0 ) (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -1771,10 +1800,29 @@ else local.get $0 call $~lib/rt/itcms/Object#unlink - local.get $0 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 end ) (func $~lib/rt/itcms/__collect @@ -1847,14 +1895,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace ) ) diff --git a/tests/compiler/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat index 01a0b2e97a..04aa653730 100644 --- a/tests/compiler/rt/runtime-minimal-export.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -4,8 +4,8 @@ (type $i32_i32_=>_none (func (param 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 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -314,12 +314,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -639,28 +639,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -757,11 +757,34 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 125 + i32.const 31 + 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 i32.const 1073741820 i32.ge_u if @@ -772,50 +795,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.tee $2 + local.get $6 i32.const 12 i32.le_u - select - local.tee $2 + 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 $1 + 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 $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -823,18 +850,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -842,18 +869,18 @@ unreachable end end - local.get $0 - local.get $1 + 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 $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $6 i32.eqz if i32.const 0 @@ -864,8 +891,8 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $6 i32.load i32.const -4 i32.and @@ -878,13 +905,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $2 + local.get $6 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $6 i32.load - local.set $3 - local.get $2 + local.set $5 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -897,54 +924,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub local.tee $4 i32.const 16 i32.ge_u if - local.get $1 - local.get $2 + local.get $6 local.get $3 + local.get $5 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $6 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $6 + local.get $5 i32.const -2 i32.and i32.store - local.get $1 + local.get $6 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $3 + local.get $6 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.load i32.const -4 i32.and @@ -954,84 +981,37 @@ i32.and i32.store end + local.get $6 local.get $1 - ) - (func $~lib/rt/tcms/initLazy (param $0 i32) (result i32) - local.get $0 + i32.store offset=12 + local.get $6 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 $1 + global.get $~lib/rt/tcms/white + i32.or i32.store offset=4 - local.get $0 + local.get $6 local.get $0 i32.store offset=8 local.get $0 - ) - (func $~lib/rt/tcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 + local.get $6 local.get $0 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - ) - (func $~lib/rt/tcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/tcms/Object#set:next local.get $1 - local.get $0 + local.get $6 i32.store offset=8 - ) - (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 125 - i32.const 31 - 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 $2 - local.get $0 - i32.store offset=16 - local.get $2 - global.get $~lib/rt/tcms/fromSpace - global.get $~lib/rt/tcms/white - call $~lib/rt/tcms/Object#linkTo global.get $~lib/rt/tcms/total - local.get $2 + local.get $6 i32.load i32.const -4 i32.and @@ -1039,7 +1019,7 @@ i32.add i32.add global.set $~lib/rt/tcms/total - local.get $2 + local.get $6 i32.const 20 i32.add ) @@ -1087,10 +1067,17 @@ i32.store offset=8 local.get $0 local.get $1 - call $~lib/rt/tcms/Object#set:next + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 ) (func $~lib/rt/tcms/__pin (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 if local.get $0 @@ -1112,14 +1099,35 @@ end local.get $1 call $~lib/rt/tcms/Object#unlink - local.get $1 global.get $~lib/rt/tcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + 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 - call $~lib/rt/tcms/Object#linkTo + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 end local.get $0 ) (func $~lib/rt/tcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -1144,10 +1152,29 @@ end local.get $0 call $~lib/rt/tcms/Object#unlink - local.get $0 global.get $~lib/rt/tcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 global.get $~lib/rt/tcms/white - call $~lib/rt/tcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/tcms/__collect (local $0 i32) @@ -1202,19 +1229,19 @@ end global.get $~lib/rt/tcms/white i32.eqz - local.set $5 + local.set $4 global.get $~lib/rt/tcms/toSpace - local.tee $6 + local.tee $5 i32.load offset=4 i32.const -4 i32.and local.set $0 loop $while-continue|1 local.get $0 - local.get $6 + local.get $5 i32.ne if - local.get $5 + local.get $4 local.get $0 i32.load offset=4 i32.const 3 @@ -1292,7 +1319,7 @@ local.get $0 i32.const 4 i32.add - local.tee $4 + local.tee $0 i32.const 1484 i32.ge_u if @@ -1302,16 +1329,16 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $0 i32.const 4 i32.sub local.set $3 - local.get $4 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $4 + local.get $0 select if (result i32) local.get $3 @@ -1351,14 +1378,16 @@ local.get $2 local.get $2 i32.store offset=8 - local.get $6 + local.get $5 global.set $~lib/rt/tcms/fromSpace local.get $2 global.set $~lib/rt/tcms/toSpace - local.get $5 + local.get $4 global.set $~lib/rt/tcms/white ) (func $~lib/rt/tcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -1376,11 +1405,30 @@ if local.get $0 call $~lib/rt/tcms/Object#unlink - local.get $0 global.get $~lib/rt/tcms/toSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 global.get $~lib/rt/tcms/white i32.eqz - call $~lib/rt/tcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 end ) (func $~lib/rt/__visit_members (param $0 i32) @@ -1410,14 +1458,29 @@ unreachable ) (func $~start + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store i32.const 1232 - call $~lib/rt/tcms/initLazy global.set $~lib/rt/tcms/fromSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store i32.const 1328 - call $~lib/rt/tcms/initLazy global.set $~lib/rt/tcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store i32.const 1424 - call $~lib/rt/tcms/initLazy global.set $~lib/rt/tcms/toSpace ) ) diff --git a/tests/compiler/rt/runtime-stub-export.optimized.wat b/tests/compiler/rt/runtime-stub-export.optimized.wat index bfc4b030d1..add62a8d14 100644 --- a/tests/compiler/rt/runtime-stub-export.optimized.wat +++ b/tests/compiler/rt/runtime-stub-export.optimized.wat @@ -53,7 +53,7 @@ unreachable end global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + local.tee $6 i32.const 4 i32.add local.tee $4 @@ -108,6 +108,7 @@ end local.get $2 global.set $~lib/rt/stub/offset + local.get $6 local.get $7 i32.store local.get $4 diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index 1cccf9a240..89570c96c6 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -1,15 +1,13 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $none_=>_i64 (func (result i64))) @@ -235,28 +233,31 @@ (data (i32.const 5816) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 5868) "\1c") (data (i32.const 5880) "\01\00\00\00\02\00\00\000") - (data (i32.const 5900) "\\") - (data (i32.const 5912) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 5996) "\1c") - (data (i32.const 6008) "\01\00\00\00\04\00\00\00:\00 ") - (data (i32.const 6028) "\1c") - (data (i32.const 6040) "\01\00\00\00\06\00\00\00m\00s\00\n") - (data (i32.const 6060) "L") - (data (i32.const 6072) "\01\00\00\000\00\00\00\'\00 \00f\00o\00r\00 \00c\00o\00n\00s\00o\00l\00e\00.\00t\00i\00m\00e\00E\00n\00d\00(\00)\00\n") - (data (i32.const 6140) ",") - (data (i32.const 6152) "\01\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l") - (data (i32.const 6188) ",") - (data (i32.const 6200) "\01\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l") - (data (i32.const 6236) "\1c") - (data (i32.const 6248) "\01\00\00\00\02\00\00\001") - (data (i32.const 6268) "\1c") - (data (i32.const 6280) "\01\00\00\00\04\00\00\001\002") - (data (i32.const 6300) "\1c") - (data (i32.const 6312) "\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 6332) "\1c") - (data (i32.const 6344) "\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 6368) "\04\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 6396) "\10\02\82") + (data (i32.const 5900) "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") + (data (i32.const 6300) "\1c\04") + (data (i32.const 6312) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 7356) "\\") + (data (i32.const 7368) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 7452) "\1c") + (data (i32.const 7464) "\01\00\00\00\04\00\00\00:\00 ") + (data (i32.const 7484) "\1c") + (data (i32.const 7496) "\01\00\00\00\06\00\00\00m\00s\00\n") + (data (i32.const 7516) "L") + (data (i32.const 7528) "\01\00\00\000\00\00\00\'\00 \00f\00o\00r\00 \00c\00o\00n\00s\00o\00l\00e\00.\00t\00i\00m\00e\00E\00n\00d\00(\00)\00\n") + (data (i32.const 7596) ",") + (data (i32.const 7608) "\01\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l") + (data (i32.const 7644) ",") + (data (i32.const 7656) "\01\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l") + (data (i32.const 7692) "\1c") + (data (i32.const 7704) "\01\00\00\00\02\00\00\001") + (data (i32.const 7724) "\1c") + (data (i32.const 7736) "\01\00\00\00\04\00\00\001\002") + (data (i32.const 7756) "\1c") + (data (i32.const 7768) "\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 7788) "\1c") + (data (i32.const 7800) "\01\00\00\00\08\00\00\001\002\003\004") + (data (i32.const 7824) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 7852) "\10\02\82") (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)) @@ -268,7 +269,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/console/timers (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22788)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 24244)) (global $~started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "_start" (func $~start)) @@ -444,48 +445,6 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) i32.const 0 @@ -536,7 +495,51 @@ i32.const 40 i32.store8 local.get $2 - call $~lib/util/number/decimalCount32 + 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.tee $0 local.get $4 i32.const 1 @@ -563,13 +566,57 @@ local.get $0 local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 58 i32.store8 local.get $3 - call $~lib/util/number/decimalCount32 - local.tee $1 - local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + local.get $1 i32.const 1 i32.add i32.add @@ -591,7 +638,7 @@ local.tee $3 br_if $do-continue|1 end - local.get $1 + local.get $0 local.get $4 i32.add local.tee $0 @@ -1209,12 +1256,12 @@ call $~lib/wasi/index/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1464,10 +1511,10 @@ if unreachable end - i32.const 22800 + i32.const 24256 i32.const 0 i32.store - i32.const 24368 + i32.const 25824 i32.const 0 i32.store loop $for-loop|0 @@ -1478,7 +1525,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 22800 + i32.const 24256 i32.add i32.const 0 i32.store offset=4 @@ -1496,7 +1543,7 @@ i32.add i32.const 2 i32.shl - i32.const 22800 + i32.const 24256 i32.add i32.const 0 i32.store offset=96 @@ -1514,13 +1561,13 @@ br $for-loop|0 end end - i32.const 22800 - i32.const 24372 + i32.const 24256 + i32.const 25828 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 22800 + i32.const 24256 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -1534,28 +1581,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1668,23 +1715,43 @@ unreachable end local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub + local.tee $2 local.get $1 i32.const 12 i32.le_u - select - local.tee $2 + 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 @@ -1692,25 +1759,10 @@ i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1737,7 +1789,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1745,8 +1797,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1759,7 +1811,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -1773,13 +1825,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.set $3 - local.get $2 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1795,33 +1847,33 @@ local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -1851,23 +1903,11 @@ end local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - 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 - i32.const 4 - i32.add - ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 22788 + i32.const 24244 i32.lt_u if return @@ -1908,12 +1948,15 @@ unreachable end local.get $1 - local.get $1 + local.tee $0 i32.load i32.const 1 i32.or - i32.store + local.set $1 + local.get $0 local.get $1 + i32.store + local.get $0 call $~lib/rt/tlsf/insertBlock ) (func $~lib/process/writeString (param $0 i32) (param $1 i32) @@ -1922,11 +1965,11 @@ (local $4 i32) (local $5 i32) i32.const -1 - local.set $4 + local.set $2 i32.const -1 - local.set $5 + local.set $3 i32.const -1 - local.set $2 + local.set $4 block $break|0 block $case4|0 block $case3|0 @@ -1943,28 +1986,28 @@ end local.get $1 i32.load16_u offset=6 - local.tee $2 + local.tee $4 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=4 - local.tee $5 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=2 - local.tee $4 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u - local.tee $3 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -1972,31 +2015,31 @@ i32.const 1144 i32.store i32.const 1140 - local.get $4 + local.get $2 i32.const -1 i32.ne i32.const 1 i32.add - local.get $5 + local.get $3 i32.const -1 i32.ne i32.add - local.get $2 + local.get $4 i32.const -1 i32.ne i32.add i32.store i32.const 1144 - local.get $3 - local.get $4 + local.get $5 + local.get $2 i32.const 8 i32.shl i32.or - local.get $5 + local.get $3 i32.const 16 i32.shl i32.or - local.get $2 + local.get $4 i32.const 24 i32.shl i32.or @@ -2021,8 +2064,6 @@ end return end - i32.const 0 - local.set $3 local.get $1 local.tee $2 local.get $2 @@ -2031,6 +2072,8 @@ 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 @@ -2098,8 +2141,16 @@ br $while-continue|0 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $3 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $2 local.get $1 local.get $1 @@ -2147,15 +2198,6 @@ unreachable end ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -2173,7 +2215,9 @@ call $~lib/rt/itcms/__visit i32.const 4288 call $~lib/rt/itcms/__visit - i32.const 5920 + i32.const 6320 + call $~lib/rt/itcms/__visit + i32.const 7376 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -2213,49 +2257,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -2280,12 +2285,12 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 local.get $0 - i32.const 22788 + i32.const 24244 i32.lt_u local.get $0 i32.load offset=8 @@ -2303,7 +2308,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2313,15 +2318,20 @@ call $~lib/wasi/index/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -2331,7 +2341,7 @@ i32.const 1 else local.get $1 - i32.const 6368 + i32.const 7824 i32.load i32.gt_u if @@ -2345,7 +2355,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 6372 + i32.const 7828 i32.add i32.load i32.const 32 @@ -2357,7 +2367,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -2427,7 +2459,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -2458,7 +2495,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 22788 + i32.const 24244 i32.lt_u if local.get $0 @@ -2490,7 +2527,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -2548,7 +2590,7 @@ unreachable end local.get $0 - i32.const 22788 + i32.const 24244 i32.lt_u if local.get $0 @@ -2576,10 +2618,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -2749,6 +2793,7 @@ ) (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 @@ -2793,7 +2838,8 @@ br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -2807,19 +2853,44 @@ local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + 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 - local.get $2 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 - call $~lib/rt/itcms/Object#linkTo + 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 @@ -2839,7 +2910,6 @@ ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) local.get $1 i32.eqz if @@ -2873,8 +2943,6 @@ i32.const 3 i32.and local.tee $3 - local.set $4 - local.get $3 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -2892,7 +2960,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -2903,24 +2971,6 @@ end end ) - (func $~lib/map/Map<~lib/string/String,u64>#set:buckets (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/map/Map<~lib/string/String,u64>#set:entries (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -3114,15 +3164,6 @@ i32.const 0 end ) - (func $~lib/map/Map<~lib/string/String,u64>#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - i32.const 0 - i32.ne - ) (func $~lib/process/process.hrtime (result i64) (local $0 i32) i32.const 1 @@ -3156,14 +3197,25 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7860 + i32.lt_s + if + i32.const 24272 + i32.const 24320 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -3248,13 +3300,21 @@ end local.get $0 local.get $6 - call $~lib/map/Map<~lib/string/String,u64>#set:buckets + i32.store + local.get $0 + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/map/Map<~lib/string/String,u64>#set:entries + i32.store offset=8 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link local.get $0 local.get $5 i32.store offset=12 @@ -3267,42 +3327,146 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - block $invalid - block $~lib/map/Map<~lib/string/String,u64> - 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 $~lib/map/Map<~lib/string/String,u64> $invalid - end - return - end - return - end + (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 + 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 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=8 - local.tee $2 - local.tee $1 - local.get $0 - i32.load offset=16 + 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 5900 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5900 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|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 5900 + 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 5900 + 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) + (local $1 i32) + (local $2 i32) + block $invalid + block $~lib/map/Map<~lib/string/String,u64> + 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 $~lib/map/Map<~lib/string/String,u64> $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 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.tee $2 + local.tee $1 + local.get $0 + i32.load offset=16 i32.const 24 i32.mul i32.add @@ -3344,25 +3508,22 @@ global.set $~started call $start:std-wasi/console ) - (func $~stack_check + (func $~lib/console/console.assert (param $0 i32) (param $1 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 6404 + i32.const 7860 i32.lt_s if - i32.const 22816 - i32.const 22864 + i32.const 24272 + i32.const 24320 i32.const 1 i32.const 1 call $~lib/wasi/index/abort unreachable end - ) - (func $~lib/console/console.assert (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3395,7 +3556,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7860 + i32.lt_s + if + i32.const 24272 + i32.const 24320 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3423,7 +3594,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7860 + i32.lt_s + if + i32.const 24272 + i32.const 24320 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3437,11 +3618,11 @@ i32.shl i32.add i32.load - local.set $5 + local.set $0 loop $while-continue|0 - local.get $5 + local.get $0 if - local.get $5 + local.get $0 i32.load offset=16 local.tee $6 i32.const 1 @@ -3450,14 +3631,14 @@ i32.const 0 else global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $0 i32.load - local.tee $4 + local.tee $2 i32.store block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 1 local.get $1 - local.get $4 + local.get $2 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop @@ -3465,12 +3646,12 @@ local.get $1 i32.eqz i32.const 1 - local.get $4 + local.get $2 select br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $4 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -3487,26 +3668,31 @@ br_if $__inlined_func$~lib/string/String.__eq drop block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $4 - i32.const 7 - i32.and + local.get $2 + local.set $4 local.get $1 - local.tee $2 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 + local.set $5 local.get $3 - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u - select + if (result i32) + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 local.get $4 i64.load - local.get $2 + local.get $5 i64.load i64.eq if @@ -3514,14 +3700,14 @@ i32.const 8 i32.add local.set $4 - local.get $2 + local.get $5 i32.const 8 i32.add - local.set $2 - local.get $0 + local.set $5 + local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -3529,17 +3715,17 @@ end end loop $while-continue|1 - local.get $0 + local.get $2 local.tee $3 i32.const 1 i32.sub - local.set $0 + local.set $2 local.get $3 if local.get $4 i32.load16_u local.tee $3 - local.get $2 + local.get $5 i32.load16_u local.tee $7 i32.ne @@ -3553,10 +3739,10 @@ i32.const 2 i32.add local.set $4 - local.get $2 + local.get $5 i32.const 2 i32.add - local.set $2 + local.set $5 br $while-continue|1 end end @@ -3570,13 +3756,13 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $0 return end local.get $6 i32.const -2 i32.and - local.set $5 + local.set $0 br $while-continue|0 end end @@ -3588,191 +3774,535 @@ ) (func $~lib/console/console.time (param $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 - i32.store - local.get $1 - local.get $0 - call $~lib/map/Map<~lib/string/String,u64>#has - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 5264 - i32.store offset=4 - i32.const 1 - i32.const 5264 - call $~lib/process/writeString - i32.const 1 + i32.const 7860 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 local.get $0 - call $~lib/process/writeString + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + if + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=4 + i32.const 1 + i32.const 5264 + call $~lib/process/writeString + i32.const 1 + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store offset=4 + i32.const 1 + i32.const 5328 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end global.get $~lib/memory/__stack_pointer - i32.const 5328 - i32.store offset=4 - i32.const 1 - i32.const 5328 - call $~lib/process/writeString + global.get $~lib/console/timers + local.tee $1 + i32.store + call $~lib/process/process.hrtime + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 - i32.store - local.get $1 - local.get $0 - call $~lib/process/process.hrtime - call $~lib/map/Map<~lib/string/String,u64>#set - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/console/timeLogImpl (param $0 i32) - (local $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $1 - i32.eqz - if - i32.const 5584 - i32.const 5648 - i32.const 105 - i32.const 17 - call $~lib/wasi/index/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 7860 + i32.lt_s + br_if $folding-inner0 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.tee $0 + local.get $2 + local.get $2 + call $~lib/util/hash/HASH<~lib/string/String> + local.tee $4 + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $1 + if + local.get $1 + local.get $3 + i64.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $5 + i32.store + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + local.get $1 + i32.const 24 + i32.mul + i32.add + local.tee $1 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i64.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $1 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $1 + i32.store + 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.add + global.set $~lib/memory/__stack_pointer + return end - local.get $1 - i64.load offset=8 - local.set $2 - call $~lib/process/process.hrtime - local.get $2 - i64.sub - i64.const 1000000 - i64.div_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/util/number/utoa64 - local.tee $1 - i32.store offset=4 + i32.const 24272 + i32.const 24320 i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 6016 - i32.store offset=8 i32.const 1 - i32.const 6016 - call $~lib/process/writeString - i32.const 1 - local.get $1 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 6048 - i32.store offset=8 - i32.const 1 - i32.const 6048 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/wasi/index/abort + unreachable ) - (func $~lib/console/console.timeLog (param $0 i32) + (func $~lib/console/timeLogImpl (param $0 i32) (local $1 i32) + (local $2 i64) + (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 - i32.store - local.get $1 - local.get $0 - call $~lib/map/Map<~lib/string/String,u64>#has - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 5424 + i32.const 7860 + 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 + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $1 + i32.eqz + if + i32.const 5584 + i32.const 5648 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i64.load offset=8 + local.set $2 + call $~lib/process/process.hrtime + local.get $2 + i64.sub + i64.const 1000000 + i64.div_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7860 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 + 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 5888 + local.set $3 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $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 $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.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 + local.get $1 + 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.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + loop $while-continue|0 + local.get $2 + i64.const 100000000 + i64.ge_u + if + local.get $3 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $2 + i64.const 100000000 + i64.div_u + local.tee $2 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $4 + i32.const 10000 + i32.rem_u + local.tee $6 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 5900 + i32.add + i64.load32_u + local.get $6 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5900 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $3 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 10000 + i32.div_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 5900 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5900 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $3 + local.get $2 + i32.wrap_i64 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $5 + local.get $3 i32.store offset=4 i32.const 1 - i32.const 5424 + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7472 + i32.store offset=8 + i32.const 1 + i32.const 7472 call $~lib/process/writeString i32.const 1 - local.get $0 + local.get $3 call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 5504 - i32.store offset=4 + i32.const 7504 + i32.store offset=8 i32.const 1 - i32.const 5504 + i32.const 7504 call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer return end - local.get $0 - call $~lib/console/timeLogImpl - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 24272 + i32.const 24320 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable ) - (func $~lib/console/console.timeEnd (param $0 i32) + (func $~lib/console/console.timeLog (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 - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7860 + i32.lt_s + if + i32.const 24272 + i32.const 24320 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $1 global.get $~lib/console/timers local.tee $1 i32.store local.get $1 local.get $0 - call $~lib/map/Map<~lib/string/String,u64>#has + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3785,632 +4315,514 @@ local.get $0 call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 6080 + i32.const 5504 i32.store offset=4 i32.const 1 - i32.const 6080 + i32.const 5504 call $~lib/process/writeString global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return - end - local.get $0 - call $~lib/console/timeLogImpl - global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $0 - if - local.get $0 - local.get $0 - i32.load offset=16 - i32.const 1 - i32.or - i32.store offset=16 - local.get $1 - local.get $1 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $1 - i32.load offset=20 - local.tee $0 - local.get $0 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $1 - i32.load offset=20 - local.get $1 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $1 - local.get $2 - call $~lib/map/Map<~lib/string/String,u64>#rehash - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std-wasi/console - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 0 - i32.const 1056 - call $~lib/console/console.assert - global.get $~lib/memory/__stack_pointer - i32.const 4384 - i32.store - i32.const 1 - i32.const 4384 - call $~lib/console/console.assert - global.get $~lib/memory/__stack_pointer - i32.const 4416 - i32.store offset=4 - i32.const 4416 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4512 - i32.store - i32.const 1 - i32.const 4512 - call $~lib/process/writeString - i32.const 1 - i32.const 4464 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4352 - i32.store - i32.const 1 - i32.const 4352 - call $~lib/process/writeString - 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 4560 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4608 - i32.store - i32.const 1 - i32.const 4608 - call $~lib/process/writeString - i32.const 1 - i32.const 4560 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4352 - i32.store - i32.const 1 - i32.const 4352 - call $~lib/process/writeString - 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 4640 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4688 - i32.store - i32.const 1 - i32.const 4688 - call $~lib/process/writeString - i32.const 1 - i32.const 4640 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4352 - i32.store - i32.const 1 - i32.const 4352 - call $~lib/process/writeString - 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 4736 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4784 - i32.store - i32.const 1 - i32.const 4784 - call $~lib/process/writeString - i32.const 1 - i32.const 4736 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4352 - i32.store - i32.const 1 - i32.const 4352 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 22788 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 4928 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 4960 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 5104 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map<~lib/string/String,u64>#set:buckets - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map<~lib/string/String,u64>#set:entries - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + end local.get $0 - global.set $~lib/console/timers - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.store offset=4 - i32.const 4832 - call $~lib/console/console.time - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.store offset=4 - i32.const 4832 - call $~lib/console/console.timeLog - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.store offset=4 - i32.const 4832 - call $~lib/console/console.timeEnd - global.get $~lib/memory/__stack_pointer - i32.const 6160 - i32.store offset=4 - i32.const 6160 - call $~lib/console/console.timeLog - global.get $~lib/memory/__stack_pointer - i32.const 6160 - i32.store offset=4 - i32.const 6160 - call $~lib/console/console.timeEnd - global.get $~lib/memory/__stack_pointer - i32.const 6208 - i32.store offset=4 - i32.const 6208 - call $~lib/console/console.time - global.get $~lib/memory/__stack_pointer - i32.const 6208 - i32.store offset=4 - i32.const 6208 - call $~lib/console/console.time - global.get $~lib/memory/__stack_pointer - i32.const 6256 - i32.store offset=4 - i32.const 6256 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 6288 - i32.store offset=4 - i32.const 6288 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 6320 - i32.store offset=4 - i32.const 6320 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 6352 - i32.store offset=4 - i32.const 6352 - call $~lib/console/console.log + call $~lib/console/timeLogImpl global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + (func $~lib/console/console.timeEnd (param $0 i32) (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 7860 + i32.lt_s if - i32.const 5152 - i32.const 5200 - i32.const 49 - i32.const 43 + i32.const 24272 + i32.const 24320 + i32.const 1 + i32.const 1 call $~lib/wasi/index/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__new + local.tee $1 + i64.const 0 + i64.store + local.get $1 + global.get $~lib/console/timers local.tee $1 i32.store local.get $1 local.get $0 - call $~lib/memory/memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/map/Map<~lib/string/String,u64>#set (param $0 i32) (param $1 i32) (param $2 i64) - (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 - call $~stack_check + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5424 + i32.store offset=4 + i32.const 1 + i32.const 5424 + call $~lib/process/writeString + i32.const 1 + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7536 + i32.store offset=4 + i32.const 1 + i32.const 7536 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + call $~lib/console/timeLogImpl global.get $~lib/memory/__stack_pointer - i32.const 0 + global.get $~lib/console/timers + local.tee $1 i32.store - local.get $0 - local.get $1 local.get $1 + local.get $0 + local.get $0 call $~lib/util/hash/HASH<~lib/string/String> - local.tee $4 call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $3 + local.tee $0 if - local.get $3 - local.get $2 - i64.store offset=8 - else + local.get $0 local.get $0 i32.load offset=16 + i32.const 1 + i32.or + i32.store offset=16 + local.get $1 + local.get $1 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $1 + i32.load offset=20 + local.tee $0 local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $1 i32.load offset=20 - local.get $0 + local.get $1 i32.load offset=12 i32.const 3 i32.mul i32.const 4 i32.div_s i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end + else + i32.const 0 + end + if + local.get $1 + local.get $2 call $~lib/map/Map<~lib/string/String,u64>#rehash end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std-wasi/console + (local $0 i32) + (local $1 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 + i32.const 7860 + 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 1056 + i32.store + i32.const 0 + i32.const 1056 + call $~lib/console/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4384 + i32.store + i32.const 1 + i32.const 4384 + call $~lib/console/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4416 + i32.store offset=4 + i32.const 4416 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4464 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7860 + 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 4512 + i32.store + i32.const 1 + i32.const 4512 + call $~lib/process/writeString + i32.const 1 + i32.const 4464 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store + i32.const 1 + i32.const 4352 + call $~lib/process/writeString + 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 + i32.const 4560 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7860 + 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 4608 + i32.store + i32.const 1 + i32.const 4608 + call $~lib/process/writeString + i32.const 1 + i32.const 4560 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store + i32.const 1 + i32.const 4352 + call $~lib/process/writeString + 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 + i32.const 4640 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7860 + 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 4688 + i32.store + i32.const 1 + i32.const 4688 + call $~lib/process/writeString + i32.const 1 + i32.const 4640 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 + i32.const 4352 i32.store + i32.const 1 + i32.const 4352 + call $~lib/process/writeString + 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 + i32.const 4736 + i32.store offset=4 local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7860 + 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.load offset=16 - local.tee $5 + i32.const 4784 + i32.store + i32.const 1 + i32.const 4784 + call $~lib/process/writeString + i32.const 1 + i32.const 4736 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store i32.const 1 + i32.const 4352 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.store offset=16 - local.get $3 - local.get $5 + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 24244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 4932 + i32.const 4928 + i32.store + i32.const 4936 + i32.const 4928 + i32.store + i32.const 4928 + global.set $~lib/rt/itcms/pinSpace + i32.const 4964 + i32.const 4960 + i32.store + i32.const 4968 + i32.const 4960 + i32.store + i32.const 4960 + global.set $~lib/rt/itcms/toSpace + i32.const 5108 + i32.const 5104 + i32.store + i32.const 5112 + i32.const 5104 + i32.store + i32.const 5104 + global.set $~lib/rt/itcms/fromSpace + 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 7860 + 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 24 - i32.mul - i32.add - local.tee $3 - local.get $1 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 i32.store local.get $0 local.get $1 - i32.const 1 + i32.const 0 call $~lib/rt/itcms/__link - local.get $3 - local.get $2 - i64.store offset=8 local.get $0 + i32.const 3 + i32.store offset=4 local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 local.get $0 - i32.load - local.get $4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 i32.store offset=16 local.get $0 - local.get $3 - i32.store + 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 $0 + global.set $~lib/console/timers + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.store offset=4 + i32.const 4832 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.store offset=4 + i32.const 4832 + call $~lib/console/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.store offset=4 + i32.const 4832 + call $~lib/console/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/console/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/console/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 7664 + i32.store offset=4 + i32.const 7664 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 7664 + i32.store offset=4 + i32.const 7664 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 7712 + i32.store offset=4 + i32.const 7712 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7744 + i32.store offset=4 + i32.const 7744 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7776 + i32.store offset=4 + i32.const 7776 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7808 + i32.store offset=4 + i32.const 7808 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 24272 + i32.const 24320 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable ) - (func $~lib/util/number/utoa64 (param $0 i64) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7860 + i32.lt_s + if + i32.const 24272 + i32.const 24320 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store local.get $0 - i64.eqz + i32.const 1073741820 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5888 - return + i32.const 5152 + i32.const 5200 + i32.const 49 + i32.const 43 + call $~lib/wasi/index/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - loop $do-continue|0 - local.get $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $3 - i32.const 10 - i32.div_u - local.tee $3 - br_if $do-continue|0 - end - else - global.get $~lib/memory/__stack_pointer - 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 - 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 - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - 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 - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - loop $do-continue|00 - local.get $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 - local.get $0 - i64.const 10 - i64.div_u - local.tee $0 - i64.const 0 - i64.ne - br_if $do-continue|00 - end - end + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) ) diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index 8bc98540d0..7e44685c5c 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -1,10 +1,10 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param 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_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -197,18 +197,21 @@ (data (i32.const 4888) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 4940) "\1c") (data (i32.const 4952) "\01\00\00\00\02\00\00\000") - (data (i32.const 4972) "\\") - (data (i32.const 4984) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 5068) "\1c") - (data (i32.const 5080) "\01\00\00\00\02\00\00\00,") - (data (i32.const 5132) "<") - (data (i32.const 5144) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00p\00r\00o\00c\00e\00s\00s\00.\00t\00s") - (data (i32.const 5196) "\1c") - (data (i32.const 5208) "\01\00\00\00\02\00\00\00\n") - (data (i32.const 5228) "<") - (data (i32.const 5240) "\01\00\00\00$\00\00\00s\00t\00d\00-\00w\00a\00s\00i\00/\00c\00r\00y\00p\00t\00o\00.\00t\00s") - (data (i32.const 5296) "\04\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 5324) "A\00\00\00\02") + (data (i32.const 4972) "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") + (data (i32.const 5372) "\1c\04") + (data (i32.const 5384) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 6428) "\\") + (data (i32.const 6440) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 6524) "\1c") + (data (i32.const 6536) "\01\00\00\00\02\00\00\00,") + (data (i32.const 6588) "<") + (data (i32.const 6600) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00p\00r\00o\00c\00e\00s\00s\00.\00t\00s") + (data (i32.const 6652) "\1c") + (data (i32.const 6664) "\01\00\00\00\02\00\00\00\n") + (data (i32.const 6684) "<") + (data (i32.const 6696) "\01\00\00\00$\00\00\00s\00t\00d\00-\00w\00a\00s\00i\00/\00c\00r\00y\00p\00t\00o\00.\00t\00s") + (data (i32.const 6752) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 6780) "A\00\00\00\02") (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)) @@ -223,7 +226,7 @@ (global $std-wasi/crypto/buf (mut i32) (i32.const 0)) (global $std-wasi/crypto/b1 (mut i32) (i32.const 0)) (global $std-wasi/crypto/b2 (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 21716)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23172)) (global $~started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "_start" (func $~start)) @@ -399,48 +402,6 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) i32.const 0 @@ -491,7 +452,51 @@ i32.const 40 i32.store8 local.get $2 - call $~lib/util/number/decimalCount32 + 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.tee $0 local.get $4 i32.const 1 @@ -518,13 +523,57 @@ local.get $0 local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 58 i32.store8 local.get $3 - call $~lib/util/number/decimalCount32 - local.tee $1 - local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + local.get $1 i32.const 1 i32.add i32.add @@ -546,7 +595,7 @@ local.tee $3 br_if $do-continue|1 end - local.get $1 + local.get $0 local.get $4 i32.add local.tee $0 @@ -566,15 +615,6 @@ i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -608,7 +648,9 @@ call $~lib/rt/itcms/__visit i32.const 1168 call $~lib/rt/itcms/__visit - i32.const 4992 + i32.const 5392 + call $~lib/rt/itcms/__visit + i32.const 6448 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -648,49 +690,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -715,12 +718,12 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 local.get $0 - i32.const 21716 + i32.const 23172 i32.lt_u local.get $0 i32.load offset=8 @@ -738,7 +741,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -748,15 +751,20 @@ call $~lib/wasi/index/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -766,7 +774,7 @@ i32.const 1 else local.get $1 - i32.const 5296 + i32.const 6752 i32.load i32.gt_u if @@ -780,7 +788,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 5300 + i32.const 6756 i32.add i32.load i32.const 32 @@ -792,7 +800,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -1099,12 +1129,12 @@ call $~lib/wasi/index/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1354,10 +1384,10 @@ if unreachable end - i32.const 21728 + i32.const 23184 i32.const 0 i32.store - i32.const 23296 + i32.const 24752 i32.const 0 i32.store loop $for-loop|0 @@ -1368,7 +1398,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 21728 + i32.const 23184 i32.add i32.const 0 i32.store offset=4 @@ -1386,7 +1416,7 @@ i32.add i32.const 2 i32.shl - i32.const 21728 + i32.const 23184 i32.add i32.const 0 i32.store offset=96 @@ -1404,20 +1434,20 @@ br $for-loop|0 end end - i32.const 21728 - i32.const 23300 + i32.const 23184 + i32.const 24756 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 21728 + i32.const 23184 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 21716 + i32.const 23172 i32.lt_u if return @@ -1458,12 +1488,15 @@ unreachable end local.get $1 - local.get $1 + local.tee $0 i32.load i32.const 1 i32.or - i32.store + local.set $1 + local.get $0 local.get $1 + i32.store + local.get $0 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) @@ -1510,7 +1543,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1541,7 +1579,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 21716 + i32.const 23172 i32.lt_u if local.get $0 @@ -1573,7 +1611,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1631,7 +1674,7 @@ unreachable end local.get $0 - i32.const 21716 + i32.const 23172 i32.lt_u if local.get $0 @@ -1659,10 +1702,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1683,28 +1728,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1817,23 +1862,43 @@ unreachable end local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub + local.tee $2 local.get $1 i32.const 12 i32.le_u - select - local.tee $2 + 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 @@ -1841,25 +1906,10 @@ i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1886,7 +1936,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1894,8 +1944,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1908,7 +1958,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -1922,13 +1972,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.set $3 - local.get $2 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1944,33 +1994,33 @@ local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -2000,18 +2050,6 @@ end local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - 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 - i32.const 4 - i32.add - ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -2172,6 +2210,7 @@ ) (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 @@ -2216,7 +2255,8 @@ br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -2230,19 +2270,44 @@ local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + 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 - local.get $2 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 - call $~lib/rt/itcms/Object#linkTo + 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 @@ -2261,7 +2326,6 @@ local.get $1 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 i32.eqz if @@ -2294,8 +2358,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -2307,7 +2369,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -2660,27 +2722,108 @@ unreachable end ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + (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 + 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 4972 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 4972 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 local.get $2 - i32.const 1 + i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i32.const 10 + i32.const 100 i32.rem_u - i32.const 48 + i32.const 2 + i32.shl + i32.const 4972 i32.add - i32.store16 + i32.load + i32.store local.get $1 - i32.const 10 + i32.const 100 i32.div_u - local.tee $1 - br_if $do-continue|0 + 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 4972 + 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/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -2705,251 +2848,1079 @@ i32.const 255 i32.and local.tee $2 - call $~lib/util/number/decimalCount32 + 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.set $1 local.get $0 local.get $2 local.get $1 - call $~lib/util/number/utoa_dec_simple + call $~lib/util/number/utoa32_dec_lut local.get $1 ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 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 $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + 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 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end - ) - (func $~lib/string/String.__concat (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u i32.const 1 - i32.shl - local.tee $3 - i32.const 4652 - i32.load + i32.add + local.tee $0 + local.get $1 i32.const 1 - i32.shr_u + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - i32.shl - local.tee $2 i32.add 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 4736 - local.set $0 - br $__inlined_func$~lib/string/String#concat - end - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 i32.const 1 - call $~lib/rt/itcms/__new + i32.add local.tee $0 - i32.store - local.get $0 - i32.const 4656 - local.get $2 - call $~lib/memory/memory.copy + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $2 + i32.const 1 i32.add + local.tee $0 local.get $1 - local.get $3 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + 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/string/String.__concat (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 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 6788 + i32.lt_s + if + i32.const 23200 + i32.const 23248 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat + i32.const 4652 + 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 4736 + 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 4656 + 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 - local.get $0 + local.get $1 ) (func $~lib/process/writeString (param $0 i32) (local $1 i32) @@ -2957,11 +3928,11 @@ (local $3 i32) (local $4 i32) i32.const -1 - local.set $3 + local.set $1 i32.const -1 - local.set $4 + local.set $2 i32.const -1 - local.set $1 + local.set $3 block $break|0 block $case4|0 block $case3|0 @@ -2978,68 +3949,68 @@ end local.get $0 i32.load16_u offset=6 - local.tee $1 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=4 - local.tee $4 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=2 - local.tee $3 + local.tee $1 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u - local.tee $2 + local.tee $4 i32.const 128 i32.ge_u br_if $break|0 - i32.const 5104 - i32.const 5112 + i32.const 6560 + i32.const 6568 i32.store - i32.const 5108 - local.get $3 + i32.const 6564 + local.get $1 i32.const -1 i32.ne i32.const 1 i32.add - local.get $4 + local.get $2 i32.const -1 i32.ne i32.add - local.get $1 + local.get $3 i32.const -1 i32.ne i32.add i32.store - i32.const 5112 - local.get $2 - local.get $3 + i32.const 6568 + local.get $4 + local.get $1 i32.const 8 i32.shl i32.or - local.get $4 + local.get $2 i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 24 i32.shl i32.or i32.store i32.const 1 - i32.const 5104 + i32.const 6560 i32.const 1 - i32.const 5116 + i32.const 6572 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.tee $0 i32.const 65535 @@ -3047,7 +4018,7 @@ if local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 5152 + i32.const 6608 i32.const 178 i32.const 16 call $~lib/wasi/index/abort @@ -3058,8 +4029,6 @@ end local.get $0 local.set $1 - i32.const 0 - local.set $2 local.get $0 local.get $0 i32.const 20 @@ -3067,6 +4036,8 @@ 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 @@ -3134,8 +4105,16 @@ br $while-continue|0 end end + 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/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $1 local.get $0 local.get $0 @@ -3150,22 +4129,22 @@ i32.ne if i32.const 0 - i32.const 5152 + i32.const 6608 i32.const 184 i32.const 3 call $~lib/wasi/index/abort unreachable end - i32.const 5104 + i32.const 6560 local.get $1 i32.store - i32.const 5108 + i32.const 6564 local.get $2 i32.store i32.const 1 - i32.const 5104 + i32.const 6560 i32.const 1 - i32.const 5112 + i32.const 6568 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 local.get $1 @@ -3176,21 +4155,13 @@ if local.get $0 call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 5152 + i32.const 6608 i32.const 189 i32.const 12 call $~lib/wasi/index/abort unreachable end ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 @@ -3214,817 +4185,945 @@ block $folding-inner0 block $invalid 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 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std-wasi/crypto - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 5332 - i32.lt_s - if - i32.const 21744 - i32.const 21792 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - ) - (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 5088 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/console/console.log (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 5216 - i32.store - i32.const 5216 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std-wasi/crypto - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 21716 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1280 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1312 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1456 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 8 - call $~lib/memory/memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $std-wasi/crypto/ab - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/ab - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array.wrap - global.set $std-wasi/crypto/buf - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - call $~lib/crypto/crypto.getRandomValues - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint8Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - call $~lib/typedarray/Uint8Array#slice - global.set $std-wasi/crypto/b1 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/ab - local.tee $0 - i32.store - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/typedarray/Uint8Array.wrap - global.set $std-wasi/crypto/buf - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - call $~lib/crypto/crypto.getRandomValues - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint8Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - call $~lib/typedarray/Uint8Array#slice - global.set $std-wasi/crypto/b2 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/ab - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const -1 - call $~lib/typedarray/Uint8Array.wrap - global.set $std-wasi/crypto/buf - loop $for-loop|0 - local.get $1 - i32.const 4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/b1 - local.tee $0 - i32.store - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - local.get $2 - i32.ne - if - i32.const 0 - i32.const 5248 - i32.const 17 - i32.const 3 - call $~lib/wasi/index/abort - unreachable + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $invalid + end + return end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + return end + unreachable end - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std-wasi/crypto + ) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result 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 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 6788 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 6544 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $0 + local.get $2 i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6788 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/buf - local.tee $0 - i32.store - local.get $0 - local.get $1 - i32.const 4 - i32.add - call $~lib/typedarray/Uint8Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/crypto/b2 - local.tee $0 - i32.store + 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 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - local.get $2 - i32.ne + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 5248 - i32.const 20 - i32.const 3 - call $~lib/wasi/index/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4736 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + block $folding-inner0 + local.get $2 + i32.eqz + if + block $__inlined_func$~lib/util/number/utoa32 (result i32) + local.get $3 + i32.load8_u + local.set $1 + 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 6788 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4960 + br $__inlined_func$~lib/util/number/utoa32 + end + global.get $~lib/memory/__stack_pointer + local.get $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.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $1 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + end + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 6540 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + 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.add + i32.load8_u + 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 6544 + 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 $2 + local.get $3 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + 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 6788 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#substring + i32.const 0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + local.tee $1 + local.get $1 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $5 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $3 + i32.sub + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4736 + local.set $0 + br $__inlined_func$~lib/string/String#substring + end + i32.const 0 + local.get $5 + local.get $2 + i32.const 1 + i32.shl + i32.eq + local.get $3 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#substring + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $4 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 + end + 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 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $1 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 23200 + i32.const 23248 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable ) - (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + (func $~lib/console/console.log (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $4 - local.get $1 - i32.lt_u + i32.const 6788 + i32.lt_s if - i32.const 1360 - i32.const 1568 - i32.const 1826 - i32.const 5 + i32.const 23200 + i32.const 23248 + i32.const 1 + i32.const 1 call $~lib/wasi/index/abort unreachable end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - i32.const -1 - i32.eq - if (result i32) - local.get $4 - local.get $1 - i32.sub - else - i32.const 1056 - i32.const 1568 - i32.const 1835 - i32.const 7 - call $~lib/wasi/index/abort - unreachable - end - local.set $3 - else - local.get $4 - local.get $2 - local.tee $3 - local.get $1 - i32.add - i32.lt_s - if - i32.const 1056 - i32.const 1568 - i32.const 1840 - i32.const 7 - call $~lib/wasi/index/abort - unreachable - end - end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 + i32.const 0 i32.store - local.get $2 local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 6672 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $1 - i32.add - i32.store offset=4 + i32.const 6672 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (func $start:std-wasi/crypto + (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.const 16 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $1 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $3 - i32.eqz - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6788 + 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 + memory.size + i32.const 16 + i32.shl + i32.const 23172 + 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 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6788 + 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 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 8 + call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 4736 - return - end - i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if + local.get $0 + global.set $std-wasi/crypto/ab + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/ab + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array.wrap + global.set $std-wasi/crypto/buf + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4656 + i32.store offset=4 + local.get $0 + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint8Array#slice + global.set $std-wasi/crypto/b1 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/ab + local.tee $0 + i32.store + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/typedarray/Uint8Array.wrap + global.set $std-wasi/crypto/buf + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 4656 + i32.store offset=4 + local.get $0 + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - local.get $1 - 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 - local.get $2 - ) - (func $~lib/util/string/joinIntegerArray (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s - if + i32.store + local.get $0 + call $~lib/console/console.log global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 4736 - return - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load8_u - local.set $1 - global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint8Array#slice + global.set $std-wasi/crypto/b2 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/ab + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/typedarray/Uint8Array.wrap + global.set $std-wasi/crypto/buf + loop $for-loop|0 + local.get $1 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa32 - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 4960 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32 - end - local.get $1 - call $~lib/util/number/decimalCount32 - local.set $2 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new + global.get $std-wasi/crypto/buf local.tee $0 i32.store local.get $0 local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple + call $~lib/typedarray/Uint8Array#__get + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4 + global.get $std-wasi/crypto/b1 + local.tee $2 + i32.store + local.get $2 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + local.get $0 + i32.ne + if + i32.const 0 + i32.const 6704 + i32.const 17 + i32.const 3 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $1 + br $for-loop|0 end - br $folding-inner0 end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 5084 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 4 + i32.lt_s if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store local.get $0 - local.get $5 + local.get $1 + i32.const 4 i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered + call $~lib/typedarray/Uint8Array#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/b2 + local.tee $2 + i32.store local.get $2 - i32.add - local.set $2 - local.get $4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + local.get $0 + i32.ne if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 5088 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - local.set $2 + i32.const 0 + i32.const 6704 + i32.const 20 + i32.const 3 + call $~lib/wasi/index/abort + unreachable end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0 + local.set $1 + br $for-loop|1 end end - local.get $6 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.add - i32.load8_u - call $~lib/util/number/itoa_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 - ) - (func $~lib/typedarray/Uint8Array#slice (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - local.set $2 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - local.get $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $7 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 23200 + i32.const 23248 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + ) + (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.eqz + i32.const 6788 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store + i32.const 23200 + i32.const 23248 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store local.get $1 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 1073741820 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $3 i32.gt_u if - i32.const 1056 - i32.const 1104 - i32.const 18 - i32.const 57 + i32.const 1360 + i32.const 1568 + i32.const 1826 + i32.const 5 call $~lib/wasi/index/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 0 + i32.lt_s + if + local.get $2 + i32.const -1 + i32.eq + if (result i32) + local.get $3 + local.get $1 + i32.sub + else + i32.const 1056 + i32.const 1568 + i32.const 1835 + i32.const 7 + call $~lib/wasi/index/abort + unreachable + end + local.set $2 + else + local.get $3 + local.get $1 + local.get $2 + i32.add + i32.lt_s + if + i32.const 1056 + i32.const 1568 + i32.const 1840 + i32.const 7 + call $~lib/wasi/index/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 + local.tee $3 + i32.store local.get $3 - call $~lib/memory/memory.fill - local.get $1 - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $1 - local.get $4 - i32.store offset=4 - local.get $1 + local.get $0 + i32.store + local.get $3 + local.get $0 + call $~lib/rt/itcms/__link local.get $3 + 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 $3 + local.get $0 local.get $1 - i32.store + i32.add + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - local.get $7 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - call $~lib/memory/memory.copy + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#slice (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - local.get $1 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 6788 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 0 + i32.store + i32.const 0 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $6 + local.get $5 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6788 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + local.get $6 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $7 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6788 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + end + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 18 + i32.const 57 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + local.get $3 + 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 $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.get $6 + local.get $0 + i32.load offset=4 + i32.add + local.get $7 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 23200 + i32.const 23248 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable ) ) diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index 8a27466d87..37367cfcce 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -1,14 +1,13 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) @@ -233,14 +232,17 @@ (data (i32.const 5560) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 5612) "\1c") (data (i32.const 5624) "\01\00\00\00\02\00\00\000") - (data (i32.const 5644) "\\") - (data (i32.const 5656) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 5740) ",") - (data (i32.const 5752) "\01\00\00\00\18\00\00\00=\00=\00 \00h\00r\00t\00i\00m\00e\00 \00=\00=") - (data (i32.const 5788) ",") - (data (i32.const 5800) "\01\00\00\00\14\00\00\00=\00=\00 \00e\00x\00i\00t\00 \00=\00=") - (data (i32.const 5840) "\05\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 5868) "\02A\00\00\00\00\00\00\10A\82") + (data (i32.const 5644) "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") + (data (i32.const 6044) "\1c\04") + (data (i32.const 6056) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 7100) "\\") + (data (i32.const 7112) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 7196) ",") + (data (i32.const 7208) "\01\00\00\00\18\00\00\00=\00=\00 \00h\00r\00t\00i\00m\00e\00 \00=\00=") + (data (i32.const 7244) ",") + (data (i32.const 7256) "\01\00\00\00\14\00\00\00=\00=\00 \00e\00x\00i\00t\00 \00=\00=") + (data (i32.const 7296) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 7324) "\02A\00\00\00\00\00\00\10A\82") (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)) @@ -256,7 +258,7 @@ (global $~lib/process/process.env (mut i32) (i32.const 0)) (global $std-wasi/process/env (mut i32) (i32.const 0)) (global $std-wasi/process/envKeys (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22268)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23724)) (global $~started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "_start" (func $~start)) @@ -432,48 +434,6 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) i32.const 0 @@ -524,7 +484,51 @@ i32.const 40 i32.store8 local.get $2 - call $~lib/util/number/decimalCount32 + 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.tee $0 local.get $4 i32.const 1 @@ -551,13 +555,57 @@ local.get $0 local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 58 i32.store8 local.get $3 - call $~lib/util/number/decimalCount32 - local.tee $1 - local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + local.get $1 i32.const 1 i32.add i32.add @@ -579,7 +627,7 @@ local.tee $3 br_if $do-continue|1 end - local.get $1 + local.get $0 local.get $4 i32.add local.tee $0 @@ -1197,12 +1245,12 @@ call $~lib/wasi/index/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1452,10 +1500,10 @@ if unreachable end - i32.const 22272 + i32.const 23728 i32.const 0 i32.store - i32.const 23840 + i32.const 25296 i32.const 0 i32.store loop $for-loop|0 @@ -1466,7 +1514,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 22272 + i32.const 23728 i32.add i32.const 0 i32.store offset=4 @@ -1484,7 +1532,7 @@ i32.add i32.const 2 i32.shl - i32.const 22272 + i32.const 23728 i32.add i32.const 0 i32.store offset=96 @@ -1502,13 +1550,13 @@ br $for-loop|0 end end - i32.const 22272 - i32.const 23844 + i32.const 23728 + i32.const 25300 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 22272 + i32.const 23728 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) @@ -1522,28 +1570,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1656,23 +1704,43 @@ unreachable end local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub + local.tee $2 local.get $1 i32.const 12 i32.le_u - select - local.tee $2 + 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 @@ -1680,25 +1748,10 @@ i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1725,7 +1778,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1733,8 +1786,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1747,7 +1800,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -1761,13 +1814,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.set $3 - local.get $2 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1783,33 +1836,33 @@ local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -1839,23 +1892,11 @@ end local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - 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 - i32.const 4 - i32.add - ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 22268 + i32.const 23724 i32.lt_u if return @@ -1896,12 +1937,15 @@ unreachable end local.get $1 - local.get $1 + local.tee $0 i32.load i32.const 1 i32.or - i32.store + local.set $1 + local.get $0 local.get $1 + i32.store + local.get $0 call $~lib/rt/tlsf/insertBlock ) (func $~lib/process/writeString (param $0 i32) @@ -1910,11 +1954,11 @@ (local $3 i32) (local $4 i32) i32.const -1 - local.set $3 + local.set $1 i32.const -1 - local.set $4 + local.set $2 i32.const -1 - local.set $1 + local.set $3 block $break|0 block $case4|0 block $case3|0 @@ -1931,28 +1975,28 @@ end local.get $0 i32.load16_u offset=6 - local.tee $1 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=4 - local.tee $4 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=2 - local.tee $3 + local.tee $1 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u - local.tee $2 + local.tee $4 i32.const 128 i32.ge_u br_if $break|0 @@ -1960,31 +2004,31 @@ i32.const 1096 i32.store i32.const 1092 - local.get $3 + local.get $1 i32.const -1 i32.ne i32.const 1 i32.add - local.get $4 + local.get $2 i32.const -1 i32.ne i32.add - local.get $1 + local.get $3 i32.const -1 i32.ne i32.add i32.store i32.const 1096 - local.get $2 - local.get $3 + local.get $4 + local.get $1 i32.const 8 i32.shl i32.or - local.get $4 + local.get $2 i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 24 i32.shl i32.or @@ -2011,8 +2055,6 @@ end local.get $0 local.set $1 - i32.const 0 - local.set $2 local.get $0 local.get $0 i32.const 20 @@ -2020,6 +2062,8 @@ 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 @@ -2087,8 +2131,16 @@ br $while-continue|0 end end + 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/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $1 local.get $0 local.get $0 @@ -2136,15 +2188,6 @@ unreachable end ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -2192,7 +2235,9 @@ call $~lib/rt/itcms/__visit i32.const 4240 call $~lib/rt/itcms/__visit - i32.const 5664 + i32.const 6064 + call $~lib/rt/itcms/__visit + i32.const 7120 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -2232,49 +2277,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -2299,12 +2305,12 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 local.get $0 - i32.const 22268 + i32.const 23724 i32.lt_u local.get $0 i32.load offset=8 @@ -2322,7 +2328,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2332,15 +2338,20 @@ call $~lib/wasi/index/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -2350,7 +2361,7 @@ i32.const 1 else local.get $1 - i32.const 5840 + i32.const 7296 i32.load i32.gt_u if @@ -2364,7 +2375,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 5844 + i32.const 7300 i32.add i32.load i32.const 32 @@ -2376,7 +2387,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -2446,7 +2479,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -2477,7 +2515,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 22268 + i32.const 23724 i32.lt_u if local.get $0 @@ -2509,7 +2547,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -2567,7 +2610,7 @@ unreachable end local.get $0 - i32.const 22268 + i32.const 23724 i32.lt_u if local.get $0 @@ -2595,10 +2638,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -2768,6 +2813,7 @@ ) (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 @@ -2812,7 +2858,8 @@ br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -2826,19 +2873,44 @@ local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + 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 - local.get $2 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 - call $~lib/rt/itcms/Object#linkTo + 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 @@ -2858,7 +2930,6 @@ ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) local.get $1 i32.eqz if @@ -2892,8 +2963,6 @@ i32.const 3 i32.and local.tee $3 - local.set $4 - local.get $3 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -2911,7 +2980,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -2922,308 +2991,1073 @@ end end ) - (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 + i32.const 3 + i32.and + i32.const 1 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 local.get $4 - i32.const 1 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 i32.sub - local.set $4 - br $while-continue|2 + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|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 + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u 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 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store local.get $0 - i32.add + local.get $3 + i32.const 16 + i32.shr_u local.get $1 - local.get $4 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 - i32.and + local.get $2 i32.const 16 - i32.sub - i32.le_u + i32.and if - local.get $2 + local.get $0 local.get $1 - i32.store offset=16 + i32.load8_u + i32.store8 local.get $0 - return - end - local.get $1 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $0 - local.get $1 - local.get $2 - i32.load offset=16 - local.tee $0 - local.get $0 - local.get $1 - i32.gt_u - select - call $~lib/memory/memory.copy - local.get $3 - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 2 - i32.shr_u - i32.gt_u - if + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 4448 - i32.const 4496 - i32.const 14 - i32.const 48 - call $~lib/wasi/index/abort - unreachable - end - local.get $2 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.load - local.tee $4 + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew + i32.const 1 + i32.add local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add - local.get $3 - local.get $2 - i32.sub - call $~lib/memory/memory.fill + local.tee $0 local.get $1 - local.get $4 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - end + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $3 - i32.store offset=8 - end - ) - (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 4672 - i32.const 4496 - i32.const 108 - i32.const 22 - call $~lib/wasi/index/abort - unreachable - end + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 i32.const 1 i32.add - local.tee $3 - call $~lib/array/ensureSize + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + 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/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $0 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + call $~lib/memory/memory.copy + local.get $3 + ) + (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 4448 + i32.const 4496 + i32.const 14 + i32.const 48 + call $~lib/wasi/index/abort + unreachable + end + local.get $2 + local.get $0 + i32.load + local.tee $4 + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $1 + i32.add + local.get $3 + local.get $2 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 4672 + i32.const 4496 + i32.const 108 + i32.const 22 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureSize local.get $0 local.get $3 i32.store offset=12 @@ -3241,15 +4075,6 @@ i32.const 1 call $~lib/rt/itcms/__link ) - (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $0 @@ -3257,19 +4082,22 @@ i32.const 1 i32.shl i32.add - local.tee $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 + local.set $1 local.get $3 i32.const 4 i32.ge_u - select + if (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 local.get $1 @@ -3523,223 +4351,197 @@ i32.const 0 end ) - (func $~lib/map/Map<~lib/string/String,~lib/string/String>#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/util/number/utoa32_dec_lut (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) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 12 - 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 12 - 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 + local.get $1 + i32.const 10000 + i32.ge_u if - local.get $8 - i32.load offset=8 + 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.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.load - local.tee $7 - i32.store offset=8 - local.get $2 - local.get $7 - i32.store - local.get $2 - local.get $8 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH<~lib/string/String> - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $8 - i32.const 12 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 5644 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5644 i32.add - local.set $8 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store br $while-continue|0 end end - local.get $0 - local.get $6 - call $~lib/array/Array<~lib/string/String>#set:buffer - local.get $0 local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries - 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + i32.const 100 + i32.ge_u + if local.get $0 local.get $2 - i32.const 1 + i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i32.const 10 + i32.const 100 i32.rem_u - i32.const 48 + i32.const 2 + i32.shl + i32.const 5644 i32.add - i32.store16 + i32.load + i32.store local.get $1 - i32.const 10 + i32.const 100 i32.div_u - local.tee $1 - br_if $do-continue|0 + local.set $1 end - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u + local.get $1 i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - 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 - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - 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 - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - loop $do-continue|0 + 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 5644 + i32.add + i32.load + i32.store + else local.get $0 local.get $2 i32.const 1 i32.sub - local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 i32.const 48 i32.add i32.store16 + end + ) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 local.get $1 - i64.const 10 - i64.div_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 + i64.const 100000000 + i64.ge_u + if + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 5644 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5644 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + 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 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 5644 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5644 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -3856,25 +4658,22 @@ global.set $~started call $start:std-wasi/process ) - (func $~stack_check + (func $~lib/console/console.log (param $0 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 5884 + i32.const 7340 i32.lt_s if - i32.const 22288 - i32.const 22336 + i32.const 23744 + i32.const 23792 i32.const 1 i32.const 1 call $~lib/wasi/index/abort unreachable end - ) - (func $~lib/console/console.log (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3897,7 +4696,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7340 + i32.lt_s + if + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3936,63 +4745,335 @@ br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $1 - i32.eqz - i32.const 1 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + 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 + br_if $__inlined_func$~lib/string/String.__eq + drop + local.get $0 + i32.const 0 + local.get $1 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + end + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $3 + i32.const -2 + i32.and + 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 0 + ) + (func $~lib/process/lazyEnv (result i32) + (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 7340 + 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 + i32.const 1088 + i32.const 1092 + call $~lib/bindings/wasi_snapshot_preview1/environ_sizes_get + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 87 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i32.load + local.tee $7 + i32.const 2 + i32.shl + local.tee $0 + i32.const 1092 + i32.load + i32.add + local.tee $8 + 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 + i32.const 4 + i32.add + local.tee $4 + local.get $0 + local.get $4 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/environ_get + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 94 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + 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 7340 + 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 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.tee $1 + i32.store + loop $for-loop|0 + local.get $5 + local.get $7 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + local.get $0 + local.get $8 + i32.add + local.get $4 + i32.sub + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=8 + i32.const 0 + local.set $0 + block $__inlined_func$~lib/string/String#indexOf + i32.const 5100 + i32.load + i32.const 1 + i32.shr_u + local.tee $6 + i32.eqz + br_if $__inlined_func$~lib/string/String#indexOf + i32.const -1 + local.set $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $__inlined_func$~lib/string/String#indexOf + i32.const 0 + local.get $3 + local.get $3 + i32.const 0 + i32.gt_s + select + local.set $0 + local.get $3 + local.get $6 + i32.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.le_s + if + local.get $2 + local.get $0 + i32.const 5104 + local.get $6 + call $~lib/util/string/compareImpl + i32.eqz + br_if $__inlined_func$~lib/string/String#indexOf + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.xor + if + local.get $2 + i32.const 0 local.get $0 - select - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 + call $~lib/string/String#substring + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $2 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - local.tee $4 + i32.add + i32.const 2147483647 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop + local.get $3 local.get $0 - i32.const 0 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set + else + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=12 local.get $1 - local.get $4 - call $~lib/util/string/compareImpl - i32.eqz + local.get $2 + i32.const 5136 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set end - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $5 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return + local.set $5 + br $for-loop|0 end - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|0 end + local.get $4 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 16 + 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 - i32.const 0 + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable ) - (func $~lib/process/lazyEnv (result i32) + (func $start:std-wasi/process (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4000,654 +5081,828 @@ (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - i32.const 1088 - i32.const 1092 - call $~lib/bindings/wasi_snapshot_preview1/environ_sizes_get - local.tee $0 - i32.const 65535 - i32.and - if - local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4112 - i32.const 87 - i32.const 12 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1088 - i32.load - local.tee $7 - i32.const 2 - i32.shl - local.tee $0 - i32.const 1092 - i32.load - i32.add - local.tee $8 - call $~lib/rt/tlsf/__alloc - local.tee $4 - local.get $0 - local.get $4 - i32.add - call $~lib/bindings/wasi_snapshot_preview1/environ_get - local.tee $0 - i32.const 65535 - i32.and - if - local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4112 - i32.const 94 - i32.const 12 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/array/Array<~lib/string/String>#set:buffer - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - 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 - i32.store - loop $for-loop|0 - local.get $5 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 7340 + i32.lt_s + br_if $folding-inner1 + 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 + i32.const 1056 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4336 + i32.store + i32.const 4336 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4368 + i32.store + i32.const 4368 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4416 + i32.store + i32.const 4416 + call $~lib/console/console.log + memory.size + i32.const 16 + i32.shl + i32.const 23724 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 4596 + i32.const 4592 + i32.store + i32.const 4600 + i32.const 4592 + i32.store + i32.const 4592 + global.set $~lib/rt/itcms/pinSpace + i32.const 4628 + i32.const 4624 + i32.store + i32.const 4632 + i32.const 4624 + i32.store + i32.const 4624 + global.set $~lib/rt/itcms/toSpace + i32.const 4772 + i32.const 4768 + i32.store + i32.const 4776 + i32.const 4768 + i32.store + i32.const 4768 + global.set $~lib/rt/itcms/fromSpace + 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 7340 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1088 + i32.const 1092 + call $~lib/bindings/wasi_snapshot_preview1/args_sizes_get + local.tee $1 + i32.const 65535 + i32.and + if + local.get $1 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 66 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i32.load + local.tee $6 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1092 + i32.load + i32.add + local.tee $3 + 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 + i32.const 4 + i32.add + local.tee $7 + local.get $4 + local.get $7 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/args_get + local.tee $1 + i32.const 65535 + i32.and + if + local.get $1 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 73 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $4 + i32.store + loop $for-loop|0 + local.get $0 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + local.get $1 + local.get $3 + i32.add + local.get $7 + i32.sub + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $1 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end local.get $7 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $4 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + global.set $~lib/process/process.argv + global.get $~lib/process/process.argv + global.set $std-wasi/process/argv + global.get $~lib/memory/__stack_pointer + i32.const 4864 + i32.store + i32.const 4864 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/argv + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $3 + loop $for-loop|00 + local.get $3 local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - local.get $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/argv + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/console/console.log + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|00 + end + end + call $~lib/process/lazyEnv + global.set $~lib/process/process.env + global.get $~lib/process/process.env + global.set $std-wasi/process/env + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std-wasi/process/env + local.tee $3 + i32.store + i32.const 0 + local.set $0 + local.get $1 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7340 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $3 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $3 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $6 + i32.store + loop $for-loop|002 + local.get $3 local.get $8 - i32.add - local.get $4 - i32.sub - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5104 - i32.store offset=8 - block $__inlined_func$~lib/string/String#indexOf - i32.const 5100 - i32.load + i32.gt_s + if + local.get $4 + local.get $8 + i32.const 12 + i32.mul + i32.add + local.tee $1 + i32.load offset=8 i32.const 1 - i32.shr_u - local.tee $6 + i32.and i32.eqz if - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__set + local.get $0 + i32.const 1 + i32.add local.set $0 - br $__inlined_func$~lib/string/String#indexOf end - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 + local.get $8 i32.const 1 - i32.shr_u - local.tee $2 + i32.add + local.set $8 + br $for-loop|002 + end + end + local.get $6 + local.get $0 + call $~lib/array/ensureSize + local.get $6 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + global.set $std-wasi/process/envKeys + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store + i32.const 5168 + call $~lib/console/console.log + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/envKeys + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $5 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.tee $3 + global.get $std-wasi/process/envKeys + local.tee $1 + i32.store + local.get $3 + local.get $1 + local.get $5 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5216 + i32.store offset=4 + i32.const 5216 + call $~lib/process/writeString + local.get $3 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 5248 + i32.store offset=4 + i32.const 5248 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/env + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $3 + local.get $3 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,~lib/string/String>#find + local.tee $1 i32.eqz if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/string/String#indexOf + i32.const 5280 + i32.const 5344 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable end - i32.const 0 - local.get $2 - local.get $2 - i32.const 0 - i32.gt_s - select + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + call $~lib/console/console.log + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 5392 + i32.store + i32.const 5392 + call $~lib/console/console.log + i32.const 0 + i64.const 1000000 + i32.const 1088 + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.tee $1 + i32.const 65535 + i32.and + if + local.get $1 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 53 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i64.load + i64.const 1000000 + i64.div_u + 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 7340 + 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 5632 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 $4 + select + local.tee $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $6 - i32.sub - local.set $2 - loop $for-loop|00 - 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 $4 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + local.get $1 + 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 - i32.le_s - if - local.get $3 - local.get $0 - i32.const 5104 - local.get $6 - call $~lib/util/string/compareImpl - i32.eqz - br_if $__inlined_func$~lib/string/String#indexOf - local.get $0 - i32.const 1 + 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 - local.set $0 - br $for-loop|00 end end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.xor - if - local.get $3 - i32.const 0 - local.get $0 - call $~lib/string/String#substring - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $3 - local.get $0 - i32.const 1 + local.get $4 i32.add - i32.const 2147483647 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.store offset=12 - local.get $1 local.get $2 - local.get $0 - call $~lib/map/Map<~lib/string/String,~lib/string/String>#set - else - global.get $~lib/memory/__stack_pointer - i32.const 5136 - i32.store offset=12 local.get $1 - local.get $3 - i32.const 5136 - call $~lib/map/Map<~lib/string/String,~lib/string/String>#set + call $~lib/util/number/utoa64_dec_lut end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $start:std-wasi/process - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4336 - i32.store - i32.const 4336 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4368 - i32.store - i32.const 4368 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4416 - i32.store - i32.const 4416 - call $~lib/console/console.log - memory.size - i32.const 16 - i32.shl - i32.const 22268 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 4592 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 4624 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 4768 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $~lib/process/lazyArgv - global.set $~lib/process/process.argv - global.get $~lib/process/process.argv - global.set $std-wasi/process/argv - global.get $~lib/memory/__stack_pointer - i32.const 4864 - i32.store - i32.const 4864 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/argv - local.tee $1 - i32.store - local.get $1 - i32.load offset=12 - local.set $2 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/argv - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/console/console.log - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - call $~lib/process/lazyEnv - global.set $~lib/process/process.env - global.get $~lib/process/process.env - global.set $std-wasi/process/env - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/env - local.tee $2 - i32.store - i32.const 0 - local.set $0 - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $2 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $6 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $2 - i32.store - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if local.get $4 - local.get $1 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $5 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $5 - call $~lib/array/Array<~lib/string/String>#__set local.get $0 - i32.const 1 - i32.add - local.set $0 + i32.const 45 + i32.store16 end - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $1 - br $for-loop|00 + global.set $~lib/memory/__stack_pointer end - end - local.get $2 - local.get $0 - call $~lib/array/ensureSize - local.get $2 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - global.set $std-wasi/process/envKeys - global.get $~lib/memory/__stack_pointer - i32.const 5168 - i32.store - i32.const 5168 - call $~lib/console/console.log - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/envKeys - local.tee $1 - i32.store - local.get $1 - i32.load offset=12 - local.set $2 - loop $for-loop|1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.lt_s + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7216 + i32.store + i32.const 7216 + call $~lib/console/console.log + i32.const 1 + i64.const 0 + i32.const 1088 + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.tee $1 + i32.const 65535 + i32.and if - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/envKeys - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5216 - i32.store offset=4 - i32.const 5216 - call $~lib/process/writeString - local.get $1 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 5248 - i32.store offset=4 - i32.const 5248 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/env - local.tee $4 - i32.store offset=4 - local.get $4 local.get $1 - local.get $1 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,~lib/string/String>#find - local.tee $1 - i32.eqz + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 59 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i64.load + 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 7340 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 + local.get $2 + i64.eqz if - i32.const 5280 - i32.const 5344 - i32.const 105 - i32.const 17 - call $~lib/wasi/index/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5632 + local.set $0 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + 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.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + local.get $1 + 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.tee $1 + 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 $1 + call $~lib/util/number/utoa64_dec_lut end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - local.tee $1 - i32.store - local.get $1 - call $~lib/console/console.log - local.get $0 - i32.const 1 + i32.const 4 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer end - end - global.get $~lib/memory/__stack_pointer - i32.const 5392 - i32.store - i32.const 5392 - call $~lib/console/console.log - i32.const 0 - i64.const 1000000 - i32.const 1088 - call $~lib/bindings/wasi_snapshot_preview1/clock_time_get - local.tee $0 - i32.const 65535 - i32.and - if + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4112 - i32.const 53 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1088 - i64.load - i64.const 1000000 - i64.div_u - call $~lib/util/number/itoa64 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 5760 - i32.store - i32.const 5760 - call $~lib/console/console.log - i32.const 1 - i64.const 0 - i32.const 1088 - call $~lib/bindings/wasi_snapshot_preview1/clock_time_get - local.tee $0 - i32.const 65535 - i32.and - if + i32.store local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4112 - i32.const 59 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1088 - i64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7264 + i32.store + i32.const 7264 + call $~lib/console/console.log + i32.const 42 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5632 - local.set $0 - br $__inlined_func$~lib/util/number/utoa64 - end + i32.store offset=4 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $1 + i32.const 1088 local.get $3 - i64.const 4294967295 - i64.le_u + i32.store + i32.const 1092 + local.get $1 + i32.store + i32.const 0 + i32.const 1088 + i32.const 1 + i32.const 1096 + call $~lib/bindings/wasi_snapshot_preview1/fd_read + local.tee $1 + i32.const 65535 + i32.and if - local.get $3 - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - 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 $1 - call $~lib/util/number/utoa_dec_simple - else - local.get $3 - call $~lib/util/number/decimalCount64High - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 local.get $1 - call $~lib/util/number/utoa_dec_simple + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 142 + i32.const 14 + call $~lib/wasi/index/abort + unreachable end + i32.const 1096 + i32.load + drop global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 5808 - i32.store - i32.const 5808 - call $~lib/console/console.log - i32.const 42 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $1 - i32.const 1088 - local.get $0 - i32.store - i32.const 1092 - local.get $1 - i32.store - i32.const 0 - i32.const 1088 + i32.const 23744 + i32.const 23792 i32.const 1 - i32.const 1096 - call $~lib/bindings/wasi_snapshot_preview1/fd_read - local.tee $0 - i32.const 65535 - i32.and - if - local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4112 - i32.const 142 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1096 - i32.load - drop - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/wasi/index/abort + unreachable ) (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (result i32) (local $1 i32) @@ -4657,11 +5912,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7340 + i32.lt_s + if + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 16 i32.const 3 call $~lib/rt/itcms/__new @@ -4669,7 +5935,11 @@ i32.store local.get $1 i32.const 0 - call $~lib/array/Array<~lib/string/String>#set:buffer + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link local.get $1 i32.const 0 i32.store offset=4 @@ -4704,7 +5974,11 @@ call $~lib/memory/memory.fill local.get $1 local.get $2 - call $~lib/array/Array<~lib/string/String>#set:buffer + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link local.get $1 local.get $2 i32.store offset=4 @@ -4730,7 +6004,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7340 + i32.lt_s + if + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -4922,117 +6206,23 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/process/lazyArgv (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1088 - i32.const 1092 - call $~lib/bindings/wasi_snapshot_preview1/args_sizes_get - local.tee $0 - i32.const 65535 - i32.and - if - local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4112 - i32.const 66 - i32.const 12 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1088 - i32.load - local.tee $0 - i32.const 2 - i32.shl - local.tee $1 - i32.const 1092 - i32.load - i32.add - local.tee $5 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $1 - local.get $2 - i32.add - call $~lib/bindings/wasi_snapshot_preview1/args_get - local.tee $1 - i32.const 65535 - i32.and + i32.const 7340 + i32.lt_s if - local.get $1 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4112 - i32.const 73 - i32.const 12 + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 call $~lib/wasi/index/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $1 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $0 - i32.store - loop $for-loop|0 - local.get $1 - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - local.get $4 - local.get $5 - i32.add - local.get $2 - i32.sub - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $4 - call $~lib/array/Array<~lib/string/String>#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 i32.store local.get $1 @@ -5079,7 +6269,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7340 + i32.lt_s + if + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -5116,7 +6316,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7340 + i32.lt_s + if + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -5196,224 +6406,280 @@ return 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 $0 - local.get $2 - 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 - local.get $1 - ) - (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set (param $0 i32) (param $1 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH<~lib/string/String> - local.tee $4 - call $~lib/map/Map<~lib/string/String,~lib/string/String>#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map<~lib/string/String,~lib/string/String>#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + 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 + local.get $1 ) - (func $~lib/util/number/itoa64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set (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) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i64.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5632 - 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 $3 - select - local.tee $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $4 - call $~lib/util/number/decimalCount32 - local.get $3 - i32.add - local.set $1 + i32.const 7340 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 + i32.const 0 i32.store - local.get $2 - local.get $4 - local.get $1 - call $~lib/util/number/utoa_dec_simple - else local.get $0 - call $~lib/util/number/decimalCount64High - local.get $3 - i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 local.get $1 - call $~lib/util/number/utoa_dec_simple - end - local.get $3 - if - local.get $2 - i32.const 45 - i32.store16 + call $~lib/util/hash/HASH<~lib/string/String> + local.tee $7 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $10 + 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 7340 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + local.get $10 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $11 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $4 + local.set $3 + loop $while-continue|0 + local.get $5 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.load + local.tee $9 + i32.store offset=8 + local.get $3 + local.get $9 + i32.store + local.get $3 + local.get $11 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $8 + local.get $9 + call $~lib/util/hash/HASH<~lib/string/String> + local.get $10 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=8 + local.get $9 + local.get $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $11 + i32.const 12 + i32.add + local.set $11 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + local.get $10 + i32.store offset=4 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + local.get $6 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $10 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $10 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $7 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - local.get $2 + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable ) ) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 796f1b97fd..628c0f633b 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -1,6 +1,5 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -25,13 +24,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1292 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - local.set $1 - local.get $4 i32.const 0 local.get $0 i32.const 20 @@ -39,28 +31,34 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 0 i32.gt_s select - local.tee $3 - i32.add + local.set $2 + local.get $1 local.get $2 - i32.gt_s + i32.const 1292 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.add + i32.lt_s if i32.const 0 return end block $__inlined_func$~lib/util/string/compareImpl (result i32) i32.const 1296 - local.set $2 + local.set $3 local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - local.tee $3 + local.tee $2 i32.const 7 i32.and i32.eqz @@ -72,20 +70,20 @@ select if loop $do-continue|0 - local.get $3 - i64.load local.get $2 i64.load + local.get $3 + i64.load i64.eq if - local.get $3 - i32.const 8 - i32.add - local.set $3 local.get $2 i32.const 8 i32.add local.set $2 + local.get $3 + i32.const 8 + i32.add + local.set $3 local.get $0 i32.const 4 i32.sub @@ -112,19 +110,19 @@ local.tee $4 i32.ne if - local.get $4 local.get $1 + local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 - i32.const 2 - i32.add - local.set $3 local.get $2 i32.const 2 i32.add local.set $2 + local.get $3 + i32.const 2 + i32.add + local.set $3 br $while-continue|1 end end @@ -132,7 +130,11 @@ end i32.eqz ) - (func $~stack_check + (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result 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 1308 i32.lt_s @@ -144,13 +146,6 @@ call $~lib/builtins/abort unreachable end - ) - (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -193,222 +188,312 @@ local.get $0 ) (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 1 - i32.le_u - if - i32.const 1056 - i32.const 1120 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.le_u + if + i32.const 1056 + i32.const 1120 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.load offset=4 + 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.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - i32.load offset=4 - 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.add - global.set $~lib/memory/__stack_pointer + i32.const 17712 + i32.const 17760 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $1 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17712 + i32.const 17760 i32.const 1 - i32.shr_u - 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.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1296 - i32.store offset=4 - local.get $0 - call $~lib/string/String#startsWith - 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.add - global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + 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 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 1296 + i32.store offset=4 + local.get $0 + call $~lib/string/String#startsWith + 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.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17712 + i32.const 17760 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + 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 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $1 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17712 + i32.const 17760 i32.const 1 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - 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.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable ) (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + 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 $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 1296 + i32.store offset=4 + local.get $0 + call $~lib/string/String#startsWith + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17712 + i32.const 17760 i32.const 1 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1296 - i32.store offset=4 - local.get $0 - call $~lib/string/String#startsWith - 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 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index ecebceccea..41afe17592 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1,12 +1,11 @@ (module (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_=>_none (func (param 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 (func (param i32) (result 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))) (memory $0 1) @@ -96,15 +95,6 @@ i32.add i32.load ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -184,49 +174,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -251,7 +202,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -274,7 +225,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -284,15 +235,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -328,7 +284,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -635,12 +613,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -994,7 +972,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1057,7 +1040,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1137,7 +1125,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18252 i32.ge_u if @@ -1147,19 +1135,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1176,11 +1164,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1190,10 +1181,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1214,28 +1207,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1332,11 +1325,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1347,50 +1409,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 local.get $2 i32.const 536870910 i32.lt_u - select + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl i32.add i32.const 65535 i32.add @@ -1398,18 +1464,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1417,18 +1483,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1440,7 +1506,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1453,12 +1519,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1472,54 +1538,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1529,125 +1595,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1655,7 +1760,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1688,106 +1793,10 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) - (local $4 i32) local.get $1 i32.eqz if @@ -1821,8 +1830,6 @@ i32.const 3 i32.and local.tee $3 - local.set $4 - local.get $3 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1840,7 +1847,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1851,16 +1858,6 @@ end end ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 @@ -1952,7 +1949,14 @@ (func $~start call $start:std/array-literal ) - (func $~stack_check + (func $start:std/array-literal + (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 global.get $~lib/memory/__stack_pointer i32.const 1868 i32.lt_s @@ -1964,21 +1968,14 @@ call $~lib/builtins/abort unreachable end - ) - (func $start:std/array-literal - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $0 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1088 i32.store i32.const 1100 @@ -2122,14 +2119,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1588 + i32.const 1584 + i32.store + i32.const 1592 + i32.const 1584 + i32.store i32.const 1584 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1620 + i32.const 1616 + i32.store + i32.const 1624 + i32.const 1616 + i32.store i32.const 1616 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1700 + i32.const 1696 + i32.store + i32.const 1704 + i32.const 1696 + i32.store i32.const 1696 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 3 @@ -2139,22 +2151,25 @@ local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.load offset=4 i32.store offset=8 local.get $0 i32.load offset=4 global.get $std/array-literal/i + local.tee $1 i32.store8 - global.get $std/array-literal/i + local.get $1 i32.const 1 i32.add global.set $std/array-literal/i local.get $0 i32.load offset=4 global.get $std/array-literal/i + local.tee $1 i32.store8 offset=1 - global.get $std/array-literal/i + local.get $1 i32.const 1 i32.add global.set $std/array-literal/i @@ -2164,7 +2179,7 @@ i32.store8 offset=2 local.get $0 global.set $std/array-literal/dynamicArrayI8 - global.get $~lib/memory/__stack_pointer + local.get $2 global.get $std/array-literal/dynamicArrayI8 local.tee $0 i32.store @@ -2239,32 +2254,35 @@ local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.load offset=4 i32.store offset=4 local.get $0 - i32.const 0 - global.get $std/array-literal/i - call $~lib/array/Array#__uset + i32.load offset=4 global.get $std/array-literal/i + local.tee $1 + i32.store + local.get $1 i32.const 1 i32.add global.set $std/array-literal/i local.get $0 - i32.const 1 - global.get $std/array-literal/i - call $~lib/array/Array#__uset + i32.load offset=4 global.get $std/array-literal/i + local.tee $1 + i32.store offset=4 + local.get $1 i32.const 1 i32.add global.set $std/array-literal/i local.get $0 - i32.const 2 + i32.load offset=4 global.get $std/array-literal/i - call $~lib/array/Array#__uset + i32.store offset=8 local.get $0 global.set $std/array-literal/dynamicArrayI32 - global.get $~lib/memory/__stack_pointer + local.get $2 global.get $std/array-literal/dynamicArrayI32 local.tee $0 i32.store @@ -2485,11 +2503,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 18272 + i32.const 18320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 local.get $0 local.get $1 i32.shl @@ -2529,11 +2558,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 18272 + i32.const 18320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.const 5 call $~lib/rt/itcms/__new @@ -2551,11 +2591,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 18272 + i32.const 18320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.const 7 call $~lib/rt/itcms/__new diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 381d338b31..271567b689 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -3,23 +3,21 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) + (type $none_=>_none (func)) (type $none_=>_f64 (func (result f64))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i64_=>_none (func (param i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -413,146 +411,149 @@ (data (i32.const 9272) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 9324) "\1c") (data (i32.const 9336) "\01\00\00\00\02\00\00\000") - (data (i32.const 9356) "\\") - (data (i32.const 9368) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 9452) "\1c") - (data (i32.const 9464) "\01\00\00\00\n\00\00\001\00-\002\00-\003") - (data (i32.const 9484) "\1c") - (data (i32.const 9500) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 9516) "\1c") - (data (i32.const 9528) "\01\00\00\00\02\00\00\00-") - (data (i32.const 9548) "\1c") - (data (i32.const 9564) "\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 9580) "\1c") - (data (i32.const 9592) "\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 9612) "L") - (data (i32.const 9624) "\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 9692) "L") - (data (i32.const 9708) "0") - (data (i32.const 9726) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 9772) "\1c") - (data (i32.const 9784) "\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 9804) "\1c") - (data (i32.const 9816) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 9836) "\1c") - (data (i32.const 9848) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 9868) ",") - (data (i32.const 9880) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 9916) ",") - (data (i32.const 9928) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 10024) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") - (data (i32.const 11372) "\1c") - (data (i32.const 11404) "\1c") - (data (i32.const 11420) "\04\00\00\00\01") - (data (i32.const 11436) "\1c") - (data (i32.const 11452) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 11468) ",") - (data (i32.const 11484) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 11516) "\1c") - (data (i32.const 11528) "\01\00\00\00\06\00\00\001\00,\002") - (data (i32.const 11548) ",") - (data (i32.const 11560) "\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") - (data (i32.const 11596) "\1c") - (data (i32.const 11612) "\03\00\00\00\01\ff") - (data (i32.const 11628) "\1c") - (data (i32.const 11640) "\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") - (data (i32.const 11660) "\1c") - (data (i32.const 11676) "\06\00\00\00\01\00\ff\ff") - (data (i32.const 11692) ",") - (data (i32.const 11704) "\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") - (data (i32.const 11740) ",") - (data (i32.const 11756) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11788) "L") - (data (i32.const 11800) "\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data (i32.const 11868) "<") - (data (i32.const 11884) " \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 11932) "l") - (data (i32.const 11944) "\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 12044) ",") - (data (i32.const 12060) "\1c\00\00\000\"\00\00\b0!\00\00\b0!\00\00\f0!\00\00\d0!\00\00\10\"") - (data (i32.const 12092) ",") - (data (i32.const 12104) "\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data (i32.const 12140) "\1c") - (data (i32.const 12152) "\01\00\00\00\02\00\00\002") - (data (i32.const 12172) "\1c") - (data (i32.const 12184) "\01\00\00\00\02\00\00\004") - (data (i32.const 12204) ",") - (data (i32.const 12220) "\10\00\00\00@+\00\00\80/\00\00\00\00\00\00\a0/") - (data (i32.const 12252) "\1c") - (data (i32.const 12264) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") - (data (i32.const 12284) "\1c") - (data (i32.const 12300) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 12316) "\1c") - (data (i32.const 12332) "\08\00\00\00\03\00\00\00\04") - (data (i32.const 12348) ",") - (data (i32.const 12360) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data (i32.const 12396) "\1c") - (data (i32.const 12412) "\02\00\00\00\01\02") - (data (i32.const 12428) "\1c") - (data (i32.const 12444) "\02\00\00\00\03\04") - (data (i32.const 12460) "\1c") - (data (i32.const 12476) "\04\00\00\00\01") - (data (i32.const 12492) "\1c") - (data (i32.const 12508) "\04") - (data (i32.const 12524) "\1c") - (data (i32.const 12540) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 12556) "\1c") - (data (i32.const 12572) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 12588) "\1c") - (data (i32.const 12604) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 12620) "\1c") - (data (i32.const 12632) "\01\00\00\00\06\00\00\00o\00n\00e") - (data (i32.const 12652) "\1c") - (data (i32.const 12668) "\04\00\00\00`1") - (data (i32.const 12684) "\1c") - (data (i32.const 12696) "\01\00\00\00\06\00\00\00t\00w\00o") - (data (i32.const 12716) "\1c") - (data (i32.const 12728) "\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") - (data (i32.const 12748) "\1c") - (data (i32.const 12764) "\0c\00\00\00\a01\00\00\00\00\00\00\c01") - (data (i32.const 12780) "\1c") - (data (i32.const 12792) "\01\00\00\00\08\00\00\00f\00o\00u\00r") - (data (i32.const 12812) "\1c") - (data (i32.const 12824) "\01\00\00\00\08\00\00\00f\00i\00v\00e") - (data (i32.const 12844) "\1c") - (data (i32.const 12856) "\01\00\00\00\06\00\00\00s\00i\00x") - (data (i32.const 12876) "\1c") - (data (i32.const 12892) "\0c\00\00\00\002\00\00 2\00\00@2") - (data (i32.const 12908) "\1c") - (data (i32.const 12920) "\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") - (data (i32.const 12940) "\1c") - (data (i32.const 12956) "\04\00\00\00\802") - (data (i32.const 12972) "<") - (data (i32.const 12988) " \00\00\00`1\00\00\a01\00\00\00\00\00\00\c01\00\00\002\00\00 2\00\00@2\00\00\802") - (data (i32.const 13036) "\1c") - (data (i32.const 13068) "\1c") - (data (i32.const 13100) "<") - (data (i32.const 13112) "\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") - (data (i32.const 13164) "\1c") - (data (i32.const 13176) "+\00\00\00\08\00\00\009") - (data (i32.const 13196) "\1c") - (data (i32.const 13208) "\1e\00\00\00\08\00\00\00:") - (data (i32.const 13232) ",\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 13260) "\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a") - (data (i32.const 13412) "\02A") - (data (i32.const 13428) " \00\00\00\00\00\00\00\02A") - (data (i32.const 13452) "\02a") - (data (i32.const 13468) "\02A") - (data (i32.const 13484) "B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d") + (data (i32.const 9356) "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") + (data (i32.const 9756) "\1c\04") + (data (i32.const 9768) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 10812) "\\") + (data (i32.const 10824) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 10908) "\1c") + (data (i32.const 10920) "\01\00\00\00\n\00\00\001\00-\002\00-\003") + (data (i32.const 10940) "\1c") + (data (i32.const 10956) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 10972) "\1c") + (data (i32.const 10984) "\01\00\00\00\02\00\00\00-") + (data (i32.const 11004) "\1c") + (data (i32.const 11020) "\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 11036) "\1c") + (data (i32.const 11048) "\01\00\00\00\04\00\00\00_\00_") + (data (i32.const 11068) "L") + (data (i32.const 11080) "\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 11148) "L") + (data (i32.const 11164) "0") + (data (i32.const 11182) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") + (data (i32.const 11228) "\1c") + (data (i32.const 11240) "\01\00\00\00\04\00\00\00,\00 ") + (data (i32.const 11260) "\1c") + (data (i32.const 11272) "\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 11292) "\1c") + (data (i32.const 11304) "\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 11324) ",") + (data (i32.const 11336) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 11372) ",") + (data (i32.const 11384) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 11480) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data (i32.const 12828) "\1c") + (data (i32.const 12860) "\1c") + (data (i32.const 12876) "\04\00\00\00\01") + (data (i32.const 12892) "\1c") + (data (i32.const 12908) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 12924) ",") + (data (i32.const 12940) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 12972) "\1c") + (data (i32.const 12984) "\01\00\00\00\06\00\00\001\00,\002") + (data (i32.const 13004) ",") + (data (i32.const 13016) "\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") + (data (i32.const 13052) "\1c") + (data (i32.const 13068) "\03\00\00\00\01\ff") + (data (i32.const 13084) "\1c") + (data (i32.const 13096) "\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data (i32.const 13116) "\1c") + (data (i32.const 13132) "\06\00\00\00\01\00\ff\ff") + (data (i32.const 13148) ",") + (data (i32.const 13160) "\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data (i32.const 13196) ",") + (data (i32.const 13212) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 13244) "L") + (data (i32.const 13256) "\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data (i32.const 13324) "<") + (data (i32.const 13340) " \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data (i32.const 13388) "l") + (data (i32.const 13400) "\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 13500) ",") + (data (i32.const 13516) "\1c\00\00\000\"\00\00\b0!\00\00\b0!\00\00\f0!\00\00\d0!\00\00\10\"") + (data (i32.const 13548) ",") + (data (i32.const 13560) "\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data (i32.const 13596) "\1c") + (data (i32.const 13608) "\01\00\00\00\02\00\00\002") + (data (i32.const 13628) "\1c") + (data (i32.const 13640) "\01\00\00\00\02\00\00\004") + (data (i32.const 13660) ",") + (data (i32.const 13676) "\10\00\00\00\f00\00\0005\00\00\00\00\00\00P5") + (data (i32.const 13708) "\1c") + (data (i32.const 13720) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data (i32.const 13740) "\1c") + (data (i32.const 13756) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 13772) "\1c") + (data (i32.const 13788) "\08\00\00\00\03\00\00\00\04") + (data (i32.const 13804) ",") + (data (i32.const 13816) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") + (data (i32.const 13852) "\1c") + (data (i32.const 13868) "\02\00\00\00\01\02") + (data (i32.const 13884) "\1c") + (data (i32.const 13900) "\02\00\00\00\03\04") + (data (i32.const 13916) "\1c") + (data (i32.const 13932) "\04\00\00\00\01") + (data (i32.const 13948) "\1c") + (data (i32.const 13964) "\04") + (data (i32.const 13980) "\1c") + (data (i32.const 13996) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 14012) "\1c") + (data (i32.const 14028) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 14044) "\1c") + (data (i32.const 14060) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 14076) "\1c") + (data (i32.const 14088) "\01\00\00\00\06\00\00\00o\00n\00e") + (data (i32.const 14108) "\1c") + (data (i32.const 14124) "\04\00\00\00\107") + (data (i32.const 14140) "\1c") + (data (i32.const 14152) "\01\00\00\00\06\00\00\00t\00w\00o") + (data (i32.const 14172) "\1c") + (data (i32.const 14184) "\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data (i32.const 14204) "\1c") + (data (i32.const 14220) "\0c\00\00\00P7\00\00\00\00\00\00p7") + (data (i32.const 14236) "\1c") + (data (i32.const 14248) "\01\00\00\00\08\00\00\00f\00o\00u\00r") + (data (i32.const 14268) "\1c") + (data (i32.const 14280) "\01\00\00\00\08\00\00\00f\00i\00v\00e") + (data (i32.const 14300) "\1c") + (data (i32.const 14312) "\01\00\00\00\06\00\00\00s\00i\00x") + (data (i32.const 14332) "\1c") + (data (i32.const 14348) "\0c\00\00\00\b07\00\00\d07\00\00\f07") + (data (i32.const 14364) "\1c") + (data (i32.const 14376) "\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data (i32.const 14396) "\1c") + (data (i32.const 14412) "\04\00\00\0008") + (data (i32.const 14428) "<") + (data (i32.const 14444) " \00\00\00\107\00\00P7\00\00\00\00\00\00p7\00\00\b07\00\00\d07\00\00\f07\00\0008") + (data (i32.const 14492) "\1c") + (data (i32.const 14524) "\1c") + (data (i32.const 14556) "<") + (data (i32.const 14568) "\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") + (data (i32.const 14620) "\1c") + (data (i32.const 14632) "+\00\00\00\08\00\00\009") + (data (i32.const 14652) "\1c") + (data (i32.const 14664) "\1e\00\00\00\08\00\00\00:") + (data (i32.const 14688) ",\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 14716) "\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a") + (data (i32.const 14868) "\02A") + (data (i32.const 14884) " \00\00\00\00\00\00\00\02A") + (data (i32.const 14908) "\02a") + (data (i32.const 14924) "\02A") + (data (i32.const 14940) "B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d") (table $0 59 funcref) (elem (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|16 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -582,7 +583,7 @@ (global $std/array/ArrayU32 i32 (i32.const 40)) (global $std/array/ArrayU8 i32 (i32.const 41)) (global $std/array/ArrayStr i32 (i32.const 42)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 29972)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 31428)) (global $~started (mut i32) (i32.const 0)) (export "ArrayU32" (global $std/array/ArrayU32)) (export "ArrayU8" (global $std/array/ArrayU8)) @@ -668,15 +669,6 @@ (export "ArrayStr#join" (func $export:~lib/array/Array<~lib/string/String>#join@varargs)) (export "ArrayStr#flat" (func $export:~lib/array/Array#flat)) (export "ArrayStr#toString" (func $export:~lib/array/Array<~lib/string/String>#toString)) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -692,7 +684,7 @@ call $~lib/rt/itcms/__visit i32.const 1056 call $~lib/rt/itcms/__visit - i32.const 13120 + i32.const 14576 call $~lib/rt/itcms/__visit i32.const 2176 call $~lib/rt/itcms/__visit @@ -700,7 +692,9 @@ call $~lib/rt/itcms/__visit i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 9376 + i32.const 9776 + call $~lib/rt/itcms/__visit + i32.const 10832 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -740,49 +734,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -807,12 +762,12 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 local.get $0 - i32.const 29972 + i32.const 31428 i32.lt_u local.get $0 i32.load offset=8 @@ -830,7 +785,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -840,15 +795,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -858,7 +818,7 @@ i32.const 1 else local.get $1 - i32.const 13232 + i32.const 14688 i32.load i32.gt_u if @@ -872,7 +832,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 13236 + i32.const 14692 i32.add i32.load i32.const 32 @@ -884,7 +844,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -1191,12 +1173,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1446,10 +1428,10 @@ if unreachable end - i32.const 29984 + i32.const 31440 i32.const 0 i32.store - i32.const 31552 + i32.const 33008 i32.const 0 i32.store loop $for-loop|0 @@ -1460,7 +1442,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 29984 + i32.const 31440 i32.add i32.const 0 i32.store offset=4 @@ -1478,7 +1460,7 @@ i32.add i32.const 2 i32.shl - i32.const 29984 + i32.const 31440 i32.add i32.const 0 i32.store offset=96 @@ -1496,20 +1478,20 @@ br $for-loop|0 end end - i32.const 29984 - i32.const 31556 + i32.const 31440 + i32.const 33012 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 29984 + i32.const 31440 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 29972 + i32.const 31428 i32.lt_u if return @@ -1550,12 +1532,15 @@ unreachable end local.get $1 - local.get $1 + local.tee $0 i32.load i32.const 1 i32.or - i32.store + local.set $1 + local.get $0 local.get $1 + i32.store + local.get $0 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) @@ -1602,7 +1587,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1633,7 +1623,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 29972 + i32.const 31428 i32.lt_u if local.get $0 @@ -1665,7 +1655,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1723,7 +1718,7 @@ unreachable end local.get $0 - i32.const 29972 + i32.const 31428 i32.lt_u if local.get $0 @@ -1751,10 +1746,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1775,28 +1772,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1909,23 +1906,43 @@ unreachable end local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub + local.tee $2 local.get $1 i32.const 12 i32.le_u - select - local.tee $2 + 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 @@ -1933,25 +1950,10 @@ i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1978,7 +1980,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1986,8 +1988,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -2000,7 +2002,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -2014,13 +2016,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.set $3 - local.get $2 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -2036,33 +2038,33 @@ local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -2092,18 +2094,6 @@ end local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - 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 - i32.const 4 - i32.add - ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) @@ -2241,8 +2231,8 @@ local.set $2 local.get $0 i64.extend_i32_u - local.get $0 - i64.extend_i32_u + local.tee $4 + local.get $4 i64.const 32 i64.shl i64.or @@ -2279,6 +2269,7 @@ ) (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 @@ -2323,7 +2314,8 @@ br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -2337,24 +2329,49 @@ local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + 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 - local.get $2 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 - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total + i32.or + i32.store offset=4 local.get $2 - i32.load - i32.const -4 - i32.and + 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 @@ -2370,7 +2387,6 @@ ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) local.get $1 i32.eqz if @@ -2404,8 +2420,6 @@ i32.const 3 i32.and local.tee $3 - local.set $4 - local.get $3 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -2423,7 +2437,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -2434,728 +2448,962 @@ end end ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.set $4 local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 + local.tee $0 + local.get $1 + i32.const 1 i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 local.get $4 local.get $3 - local.get $4 - i32.lt_s - select + i32.load8_u offset=1 + i32.store8 offset=1 end - local.tee $3 - i32.lt_s + local.get $2 + i32.const 8 + i32.and if - local.get $2 - local.get $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 i32.add + local.set $0 local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 local.get $3 - local.get $2 - i32.sub - call $~lib/memory/memory.fill + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq + local.get $2 + i32.const 4 + i32.and if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - return - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.set $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 + i32.const 2 + i32.add + local.set $1 local.get $4 local.get $3 - local.get $4 - i32.lt_s - select + i32.load8_u offset=1 + i32.store8 offset=1 end - local.set $3 - loop $for-loop|0 - local.get $2 + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 local.get $3 - i32.lt_s - if - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + local.get $2 + i32.const 1 + i32.and if - i32.const 1344 - i32.const 1104 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if + (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 - return - end - local.get $0 - local.get $1 - i32.eq - if + local.get $4 i32.const 1 - return - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s + i32.shl + i32.sub + i32.le_u if local.get $0 - local.get $2 - call $~lib/array/Array#__get local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 end - end - i32.const 1 - ) - (func $~lib/array/ensureSize (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 $1 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $2 - i32.shr_u - i32.gt_u - if + local.get $0 local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u + i32.lt_u if - i32.const 1056 - i32.const 1104 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.tee $6 - local.set $3 - block $__inlined_func$~lib/rt/itcms/__renew local.get $1 - local.get $2 - i32.shl - local.tee $7 - local.tee $4 - local.get $6 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 + 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 + 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 - i32.store offset=16 - local.get $3 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew + 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 - local.get $4 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - local.get $4 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $4 - i32.gt_u - select - call $~lib/memory/memory.copy - end - local.get $1 - local.get $5 - i32.add - i32.const 0 - local.get $7 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $6 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 + else local.get $1 - i32.store offset=4 + i32.const 7 + i32.and local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link + 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 - local.get $0 - local.get $7 - i32.store offset=8 end ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - call $~lib/array/ensureSize + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) local.get $0 i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store + local.set $5 local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 2176 - i32.const 1104 - i32.const 269 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 0 - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.const 0 - i32.ge_s - select - i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 125 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $3 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl - i32.add - local.get $5 + i32.load offset=12 + local.set $4 local.get $2 i32.const 0 i32.lt_s @@ -3178,9 +3426,6 @@ select end local.tee $2 - i32.const 2 - i32.shl - i32.add local.get $3 i32.const 0 i32.lt_s @@ -3202,479 +3447,656 @@ i32.lt_s select end - local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 + local.tee $3 + i32.lt_s + if + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $3 + local.get $2 + i32.sub + call $~lib/memory/memory.fill + end + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 - local.get $2 - i32.gt_s - select - i32.const 2 - i32.shl - call $~lib/memory/memory.copy local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - local.get $2 - i32.eqz + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end + i32.const 0 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return end loop $for-loop|0 local.get $2 local.get $3 - i32.gt_s + i32.lt_s if local.get $0 - local.get $3 - call $~lib/array/Array#__get + local.get $2 + call $~lib/array/Array#__get local.get $1 - local.get $3 - call $~lib/array/Array#__get + local.get $2 + call $~lib/array/Array#__get i32.ne if i32.const 0 return end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end i32.const 1 ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 i32.load offset=12 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 + i32.add + i32.load ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - local.get $2 local.get $0 i32.load offset=12 local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select + local.get $1 + i32.load offset=12 + i32.ne if - i32.const -1 + i32.const 0 return end - local.get $2 - i32.const 0 - i32.lt_s + local.get $0 + local.get $1 + i32.eq if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 + i32.const 1 + return end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s if - local.get $1 local.get $0 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq + call $~lib/array/Array#__get + local.get $1 + local.get $2 + call $~lib/array/Array#__get + i32.ne if - local.get $2 + i32.const 0 return end local.get $2 i32.const 1 i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end - i32.const -1 + i32.const 1 ) - (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/ensureSize (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 $1 local.get $0 - i32.load offset=12 + i32.load offset=8 local.tee $3 - i32.eqz - if - i32.const -1 - return - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_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 - loop $while-continue|0 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 local.get $2 - i32.const 0 - i32.ge_s + i32.shr_u + i32.gt_u if + i32.const 1056 + i32.const 1104 + i32.const 14 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew (result i32) local.get $1 - local.get $0 local.get $2 - i32.const 2 i32.shl - i32.add + local.tee $4 + local.tee $1 + local.get $0 i32.load - i32.eq + local.tee $6 + local.tee $5 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u if local.get $2 - return + local.get $1 + i32.store offset=16 + local.get $5 + br $__inlined_func$~lib/rt/itcms/__renew end + local.get $1 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $7 + local.get $5 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + call $~lib/memory/memory.copy + local.get $7 end - end - i32.const -1 - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.tee $1 + local.get $3 + i32.add + i32.const 0 + local.get $4 + local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $6 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link end local.get $0 - i32.load offset=12 - local.set $2 + local.get $4 + i32.store offset=8 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - local.get $1 + local.get $0 local.get $0 i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end + local.tee $3 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + call $~lib/array/ensureSize local.get $0 i32.load offset=4 - local.get $1 + local.get $3 i32.const 2 i32.shl i32.add - local.get $2 + local.get $1 i32.store - ) - (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.eqz - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + local.get $2 + i32.store offset=12 + local.get $2 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end - i32.const -1 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#pop (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 + i32.load offset=12 + local.tee $1 i32.const 1 - i32.eq - ) - (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.lt_s + if + i32.const 2176 + i32.const 1104 + i32.const 269 + i32.const 21 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load local.get $0 - i32.const 100 - i32.eq + local.get $1 + i32.store offset=12 ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - call $~lib/array/Array#pop - drop + i32.store local.get $0 - i32.const 100 - i32.eq + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link ) - (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 0 local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 i32.const 0 i32.ge_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 125 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) + (local $5 i32) + local.get $3 local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $3 + local.get $0 + i32.load offset=4 + local.tee $5 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 i32.gt_s select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + select end - i32.const 1 - ) - (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 0 - i32.le_s - ) - (func $start:std/array~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.tee $1 + i32.const 2 + i32.shl + i32.add + local.get $5 local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 3 + i32.const 0 i32.lt_s - ) - (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.ge_s - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 + if (result i32) local.get $2 local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + end + local.tee $2 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) local.get $3 local.get $4 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 i32.gt_s select + else + local.get $3 + local.get $4 + local.get $3 + local.get $4 i32.lt_s + select + end + local.get $2 + i32.sub + local.tee $2 + local.get $4 + local.get $1 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + i32.eqz + if + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.gt_s if local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 + local.get $3 + call $~lib/array/Array#__get local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.get $3 + call $~lib/array/Array#__get + i32.ne if - i32.const 1 + i32.const 0 return end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end + i32.const 1 + ) + (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 4 + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=12 + local.get $2 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.eqz + ) + (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.eq + ) + (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.ge_s + ) + (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 0 + i32.le_s + ) + (func $start:std/array~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 3 + i32.lt_s + ) + (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.ge_s ) (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -3709,52 +4131,11 @@ i32.add global.set $std/array/i ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop + (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop local.get $0 global.get $std/array/i i32.add @@ -3961,52 +4342,6 @@ local.get $1 i32.add ) - (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $3 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $4 - local.get $5 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $3 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - ) (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) i32.const 1 local.get $1 @@ -4040,47 +4375,11 @@ local.get $1 i32.add ) - (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + (local $1 i32) + (local $2 i64) i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.ge_s - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $3 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $2 - ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) + global.set $~lib/math/random_seeded local.get $0 local.get $0 i64.const 33 @@ -4088,68 +4387,104 @@ i64.xor i64.const -49064778989728563 i64.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i64.const 33 i64.shr_u i64.xor i64.const -4265267296055464877 i64.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i64.const 33 i64.shr_u i64.xor - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $2 + local.get $2 + 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_state1_64 local.get $0 + i32.wrap_i64 i32.const 1831565813 i32.add - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor - local.get $0 + local.get $1 i32.const 1 i32.or i32.mul - local.tee $0 - local.get $0 - local.get $0 + local.tee $1 + local.get $1 + local.get $1 i32.const 61 i32.or - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 7 i32.shr_u i32.xor i32.mul i32.add i32.xor - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 14 i32.shr_u i32.xor - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - local.get $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 global.set $~lib/math/random_state0_32 global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 + 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 @@ -4192,7 +4527,17 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/rt/tlsf/__alloc + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $6 i32.const 0 local.get $3 @@ -4429,148 +4774,15 @@ local.get $5 f32.store ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) - (local $4 f32) - (local $5 f32) - (local $6 i32) - (local $7 i32) local.get $0 - i32.load offset=12 - local.tee $7 - i32.const 1 - i32.le_s - if - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $7 - i32.const 2 - i32.eq - if - local.get $3 - f32.load offset=4 - local.set $4 - local.get $3 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $1 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - f32.store offset=4 - local.get $3 - local.get $4 - f32.store - end - return - end - local.get $7 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $2 - loop $for-loop|0 - local.get $6 - local.get $7 - i32.lt_s - if - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $4 - local.get $6 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - local.get $0 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - br $while-continue|1 - end - end - end - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $3 - local.get $7 - local.get $1 - call $~lib/util/sort/weakHeapSort - end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - local.get $2 - i32.const 31 - i32.shr_s + i32.reinterpret_f32 + local.tee $2 + local.get $2 + i32.const 31 + i32.shr_s i32.const 1 i32.shr_u i32.xor @@ -4606,7 +4818,17 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/rt/tlsf/__alloc + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $6 i32.const 0 local.get $3 @@ -4843,139 +5065,6 @@ local.get $5 f64.store ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=12 - local.tee $7 - i32.const 1 - i32.le_s - if - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $7 - i32.const 2 - i32.eq - if - local.get $3 - f64.load offset=8 - local.set $4 - local.get $3 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $1 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - f64.store offset=8 - local.get $3 - local.get $4 - f64.store - end - return - end - local.get $7 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $2 - loop $for-loop|0 - local.get $6 - local.get $7 - i32.lt_s - if - local.get $3 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $4 - local.get $6 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - br $while-continue|1 - end - end - end - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $3 - local.get $7 - local.get $1 - call $~lib/util/sort/weakHeapSort - end - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) @@ -5041,7 +5130,17 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/rt/tlsf/__alloc + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $5 i32.const 0 local.get $3 @@ -5288,7 +5387,7 @@ (local $8 i32) local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 1 i32.le_s if @@ -5297,20 +5396,20 @@ end local.get $0 i32.load offset=4 - local.set $5 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.eq if - local.get $5 + local.get $2 i32.load offset=4 - local.set $2 - local.get $5 + local.set $4 + local.get $2 i32.load local.set $3 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 local.get $3 local.get $1 i32.load @@ -5318,30 +5417,31 @@ i32.const 0 i32.lt_s if - local.get $5 + local.get $2 local.get $3 i32.store offset=4 - local.get $5 local.get $2 + local.get $4 i32.store end local.get $0 return end - local.get $2 + local.get $3 + local.tee $4 i32.const 256 i32.lt_s if local.get $2 local.set $3 local.get $1 - local.set $4 + local.set $5 loop $for-loop|0 - local.get $3 + local.get $4 local.get $6 i32.gt_s if - local.get $5 + local.get $3 local.get $6 i32.const 2 i32.shl @@ -5358,7 +5458,7 @@ i32.ge_s if block $while-break|1 - local.get $5 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -5369,7 +5469,7 @@ global.set $~argumentsLength local.get $7 local.get $8 - local.get $4 + local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -5380,7 +5480,7 @@ i32.const 1 i32.sub local.set $1 - local.get $5 + local.get $3 local.get $2 i32.const 1 i32.add @@ -5393,7 +5493,7 @@ end end end - local.get $5 + local.get $3 local.get $1 i32.const 1 i32.add @@ -5410,8 +5510,8 @@ end end else - local.get $5 local.get $2 + local.get $4 local.get $1 call $~lib/util/sort/weakHeapSort end @@ -5437,7 +5537,17 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/rt/tlsf/__alloc + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $5 i32.const 0 local.get $3 @@ -5674,145 +5784,6 @@ local.get $1 i32.store ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.set $5 - local.get $2 - i32.const 2 - i32.eq - if - local.get $5 - i32.load offset=4 - local.set $2 - local.get $5 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $3 - i32.store offset=4 - local.get $5 - local.get $2 - i32.store - end - local.get $0 - return - end - local.get $2 - i32.const 256 - i32.lt_s - if - local.get $2 - local.set $3 - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $5 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $5 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - br $while-continue|1 - end - end - end - local.get $5 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $5 - local.get $2 - local.get $1 - call $~lib/util/sort/weakHeapSort - end - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -5911,419 +5882,272 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.sub + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + i32.eqz + local.get $0 + local.get $1 + i32.eq + select + select + if + i32.const 0 + return + end + local.get $0 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - loop $for-loop|0 - local.get $1 + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.or + i32.eqz + if + i32.const 0 + return + end + local.get $6 + i32.eqz + if + i32.const -1 + return + end + local.get $5 + i32.eqz + if + i32.const 1 + return + end + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $6 local.get $5 + local.get $5 + local.get $6 i32.gt_s - if - global.get $~lib/memory/__stack_pointer + select + local.tee $3 + i32.const 4 + i32.ge_u + if (result i32) local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 0 - i32.ge_s + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + loop $do-continue|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq if - block $while-break|1 - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $3 - local.tee $4 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - local.get $4 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - br $while-continue|1 - end + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-continue|0 end end - local.get $0 + end + loop $while-continue|1 local.get $3 + local.tee $2 i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.sub - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq + i32.sub + local.set $3 + local.get $2 if local.get $0 - i32.const 8 + i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $2 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $0 + i32.const 2 i32.add local.set $0 local.get $1 - i32.const 8 + i32.const 2 i32.add local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return + br $while-continue|1 end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 end + i32.const 0 end - i32.const 0 + local.tee $0 + local.get $6 + local.get $5 + i32.sub + local.get $0 + select ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 + (local $4 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end local.get $1 i32.eqz i32.const 1 local.get $0 - i32.eqz - local.get $0 - local.get $1 - i32.eq - select select if i32.const 0 return end - 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.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 - i32.or - i32.eqz + i32.ne if i32.const 0 return end - local.get $3 - i32.eqz - if - i32.const -1 - return - end - local.get $2 - i32.eqz - if - i32.const 1 - return - end - local.get $0 - local.get $1 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.gt_s - select - call $~lib/util/string/compareImpl - local.tee $0 - local.get $3 - local.get $2 - i32.sub - local.get $0 - select - ) - (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $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.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 8880 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#sort - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1 - local.set $0 - local.get $1 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $0 - local.get $5 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.set $3 + local.get $2 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + loop $do-continue|0 local.get $3 - i32.store + i64.load local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s + i64.load + i64.eq if - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/string/String|null> + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 end - local.get $0 - i32.const 1 + end + end + loop $while-continue|1 + local.get $0 + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + if + local.get $3 + i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $2 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 i32.add - local.set $0 - br $for-loop|0 + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - end - i32.eqz - if i32.const 0 - i32.const 1552 - i32.const 942 - 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - 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 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl i32.eqz ) (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) @@ -6334,12 +6158,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 block $__inlined_func$~lib/string/String#concat - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6347,9 +6181,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 - local.get $0 - local.tee $2 + local.tee $3 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6357,9 +6190,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.add - local.tee $0 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -6367,20 +6200,20 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 8752 - local.set $0 + local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 local.get $2 + local.get $0 local.get $3 call $~lib/memory/memory.copy - local.get $0 + local.get $2 local.get $3 i32.add local.get $1 @@ -6391,71 +6224,110 @@ i32.add global.set $~lib/memory/__stack_pointer end - local.get $0 - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select + local.get $2 ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add + (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 10 + i32.const 10000 + i32.ge_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 9356 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 9356 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|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 48 + i32.const 2 + i32.shl + i32.const 9356 i32.add - i32.store16 + i32.load + i32.store local.get $1 - i32.const 10 + i32.const 100 i32.div_u - local.tee $1 - br_if $do-continue|0 + 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 9356 + 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/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) @@ -6494,14124 +6366,17647 @@ local.get $0 local.get $1 local.get $1 - call $~lib/util/number/decimalCount32 + 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 $2 i32.add local.tee $0 - call $~lib/util/number/utoa_dec_simple + call $~lib/util/number/utoa32_dec_lut local.get $0 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 10 - i32.lt_u + (func $~lib/array/Array#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 $4 + local.get $0 + i32.load offset=12 + 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 15044 + i32.lt_s if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 + i32.const 31456 + i32.const 31504 i32.const 1 - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 - ) - (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 i64) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - local.get $3 - local.get $1 - i64.sub - local.set $8 - local.get $3 - i64.const 1 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $4 - i32.sub - local.tee $11 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $11 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $9 - loop $while-continue|0 - local.get $9 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 + i32.const 1 + i32.sub + local.tee $3 i32.const 0 - i32.gt_s + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8752 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $3 + i32.eqz if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $9 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end local.get $4 + i32.load + call $~lib/util/number/itoa32 + local.set $0 + 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 + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 11 + i32.add + i32.mul + i32.const 11 + 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.or + i32.gt_s if local.get $0 - local.get $6 + local.get $2 i32.const 1 i32.shl i32.add local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $5 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - i64.ge_u - if - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $9 i32.const 2 i32.shl - i32.const 10896 i32.add - i64.load32_u - local.get $11 - i64.extend_i32_s - i64.shl - local.set $10 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 i32.add - local.tee $0 - i32.load16_u local.set $2 - loop $while-continue|3 + local.get $5 + if + local.get $0 + local.get $2 i32.const 1 - local.get $8 - local.get $1 - i64.sub + i32.shl + i32.add local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $10 local.get $5 - local.get $1 - i64.sub - i64.le_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|3 - end + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 end - local.get $0 - local.get $2 - i32.store16 local.get $6 - return + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 end - br $while-continue|0 end - end - local.get $11 - i64.extend_i32_s - local.set $13 - loop $while-continue|4 (result i32) - local.get $5 - i64.const 10 - i64.mul - local.set $5 local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $13 - i64.shr_u + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add local.tee $1 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + i32.gt_s if local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $6 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $8 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 10896 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i64.load32_u - i64.mul - local.set $8 + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 10 + i32.lt_u + if local.get $0 - local.get $6 - i32.const 1 - i32.sub + local.get $1 + i32.const 48 + i32.or + i32.store16 i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 + return + end + local.get $0 + local.get $1 + local.get $1 + 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 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $10 - local.get $5 - local.get $1 - i64.sub - i64.le_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|6 - end + 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 - local.get $2 - i32.store16 - local.get $6 + 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.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - local.get $2 - i32.eqz + (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=12 + 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 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 + 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 8752 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $3 + i32.eqz + if + local.get $4 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + 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 + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.shl + i32.shr_u + local.tee $5 + i32.const 10 i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 + i32.mul + i32.const 10 i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) + 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 $1 local.get $3 - i32.lt_s + local.get $6 + i32.gt_s if local.get $0 - local.get $1 + local.get $2 i32.const 1 i32.shl i32.add - i32.const 48 - i32.store16 - local.get $1 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + 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 $6 i32.const 1 i32.add - local.set $1 + local.set $6 br $for-loop|0 end end + local.get $7 local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add - i32.const 3145774 - i32.store + local.get $4 local.get $3 i32.const 2 + i32.shl i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.const 46 - i32.store16 local.get $1 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - local.get $3 - i32.const -6 - i32.gt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end + 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/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) + (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 i32) + (local $9 i64) (local $10 i32) + (local $11 i64) + (local $12 i64) + local.get $3 local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 - end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl + i64.sub + local.set $9 + local.get $3 i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub + i32.const 0 local.get $4 i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add local.tee $10 i64.extend_i32_s + local.tee $1 i64.shl + local.tee $11 i64.const 1 i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $4 - local.get $1 - local.get $4 - f64.convert_i32_s - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 10024 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 10720 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 + local.tee $12 i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add + local.set $7 local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 + local.get $1 i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and + i32.wrap_i64 local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add + local.set $4 local.get $2 - local.get $6 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $9 - call $~lib/util/number/genDigits - local.get $9 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 - i32.add - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - return + 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 $1 - f64.const 0 - f64.lt - local.tee $2 + 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 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $8 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $2 + i32.const 1000000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 100000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 10000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000 + i32.div_u + local.set $4 + local.get $2 + i32.const 100000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000 + i32.div_u + local.set $4 + local.get $2 + i32.const 10000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100 + i32.div_u + local.set $4 + local.get $2 + i32.const 100 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10 + i32.div_u + local.set $4 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $4 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $4 + end + local.get $4 + local.get $6 + i32.or if local.get $0 - i32.const 45 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 65535 + i32.and + i32.const 48 + i32.add i32.store16 - local.get $0 - i32.const 2 + local.get $6 + i32.const 1 i32.add - local.set $0 + local.set $6 end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + local.get $7 local.get $2 - i32.const 8 - i32.add - return + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + i64.shl + i64.add + local.tee $1 + local.get $5 + i64.le_u + if + local.get $8 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $8 + i32.const 2 + i32.shl + i32.const 12352 + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|3 + local.get $3 + local.get $5 + local.get $1 + i64.sub + i64.le_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $9 + local.get $1 + i64.sub + local.get $1 + local.get $3 + i64.add + local.tee $7 + local.get $9 + i64.sub + i64.gt_u + local.get $7 + local.get $9 + i64.lt_u + select + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end + end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return + end + br $while-continue|0 end - unreachable end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add + local.get $10 + i64.extend_i32_s + local.set $1 + loop $while-continue|4 + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $7 + i64.const 10 + i64.mul + local.tee $3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - local.get $2 + i64.shr_u + local.tee $7 + local.get $6 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $8 i32.const 1 - i32.add - return + i32.sub + local.set $8 + local.get $5 + local.get $3 + local.get $12 + i64.and + local.tee $7 + i64.le_u + br_if $while-continue|4 end - local.get $2 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 + local.get $8 + global.get $~lib/util/number/_K i32.add + global.set $~lib/util/number/_K + local.get $7 local.set $1 + local.get $9 + i32.const 0 + local.get $8 + i32.sub + i32.const 2 + i32.shl + i32.const 12352 + i32.add + i64.load32_u + i64.mul + local.set $3 local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|6 + local.get $11 + local.get $5 + local.get $1 + i64.sub + i64.le_u + i32.const 0 + local.get $1 + local.get $3 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $3 + local.get $1 + i64.sub + local.get $1 + local.get $11 + i64.add + local.tee $7 + local.get $3 + i64.sub + i64.gt_u + local.get $3 + local.get $7 + i64.gt_u + select + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $11 + i64.add + local.set $1 + br $while-continue|6 + end + end local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 + local.get $4 + i32.store16 + local.get $6 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + i32.eqz if local.get $0 local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add return end local.get $1 - i32.const 65535 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - local.get $0 local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (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 - 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 - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - 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 - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u + local.tee $4 + i32.const 21 + i32.le_s + i32.const 0 + local.get $1 + local.get $4 + i32.le_s select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - loop $do-continue|0 + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + local.get $4 i32.const 1 i32.shl i32.add - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 + i32.const 3145774 + i32.store + local.get $4 + i32.const 2 i32.add - i32.store16 - local.get $1 - i64.const 10 - i64.div_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (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 - call $~lib/util/number/decimalCount32 - local.set $2 - local.get $0 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.tee $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $2 - ) - (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 0 - i64.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i64.const 0 - local.get $1 - i64.sub - local.set $1 - end - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $2 - local.get $0 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple else - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.tee $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $2 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 255 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + local.get $4 + i32.const 21 + i32.le_s i32.const 0 - local.get $2 + local.get $4 i32.const 0 i32.gt_s select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $1 + if (result i32) local.get $0 - local.get $2 - i32.const 2 + local.get $4 + i32.const 1 i32.shl i32.add - i32.load - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 + local.tee $0 + i32.const 2 i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if local.get $0 + i32.const 0 local.get $2 - i32.add - i32.load8_u + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + i32.const 46 + i32.store16 local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $2 - return - end - local.get $2 i32.const 1 i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 0 - call $~lib/array/ensureSize - local.get $3 - local.get $0 - i32.load offset=4 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $3 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.add - local.get $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - i32.add - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - call $~lib/memory/memory.copy - local.get $0 - ) - (func $~lib/util/sort/weakHeapSort (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.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.add - i32.load8_u - local.set $3 - local.get $0 + else local.get $4 - i32.add - i32.load8_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s - if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u + i32.le_s + i32.const 0 + local.get $4 + i32.const -6 + i32.gt_s + select + if (result i32) + local.get $0 i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 local.get $4 + i32.sub + local.tee $5 + i32.const 1 i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 i32.add - local.get $3 - i32.store8 local.get $0 - local.get $7 - i32.add - local.get $6 - i32.store8 - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - local.get $0 - local.get $4 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - local.get $1 - i32.store8 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and local.get $1 i32.const 1 i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 + call $~lib/memory/memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end end - end - loop $while-continue|4 local.get $1 - i32.const 0 - i32.gt_s - if + local.get $5 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if (result i32) local.get $0 - i32.load8_u - local.set $3 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $3 + i32.const 4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + 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.set $1 local.get $0 local.get $1 + i32.const 1 i32.add - i32.load8_u - local.set $6 - i32.const 2 - global.set $~argumentsLength + local.tee $0 + call $~lib/util/number/utoa32_dec_lut local.get $3 - local.get $6 + i32.const 45 + i32.const 43 local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) + select + i32.store16 offset=4 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + call $~lib/memory/memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $3 + i32.const 4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.tee $0 i32.const 0 i32.lt_s + local.tee $5 if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.add - local.get $3 - i32.store8 + i32.const 0 local.get $0 - local.get $6 - i32.store8 + i32.sub + local.set $0 end - local.get $1 + local.get $0 + 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 $2 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $5 + select + i32.store16 offset=4 + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.add end end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $1 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $6 i64) + (local $7 i64) (local $8 i32) - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - if + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + f64.const 0 + f64.lt + local.tee $10 + if (result f64) local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.set $5 - local.get $2 - i32.const 2 - i32.eq - if - local.get $5 - i32.load8_u offset=1 - local.set $2 - local.get $5 - i32.load8_u - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $3 - i32.store8 offset=1 - local.get $5 - local.get $2 - i32.store8 - end - local.get $0 - return + i32.const 45 + i32.store16 + local.get $1 + f64.neg + else + local.get $1 end + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl local.get $2 - i32.const 256 - i32.lt_s - if - local.get $2 - local.set $3 - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $5 - local.get $6 - i32.add - i32.load8_u - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $1 - local.get $5 - i32.add - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $5 - local.get $2 - i32.const 1 - i32.add - i32.add - local.get $8 - i32.store8 - br $while-continue|1 - end - end - end - local.get $5 - local.get $1 - i32.const 1 - i32.add - i32.add - local.get $7 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $5 - local.get $2 - local.get $1 - call $~lib/util/sort/weakHeapSort - end - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 + i64.const 4503599627370495 + i64.and + i64.add local.tee $3 - i32.const 1 - i32.add + i64.const 1 + i64.shl + i64.const 1 + i64.add local.tee $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 + local.get $2 + i64.clz + i32.wrap_i64 + local.tee $8 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $9 + i32.const 1 + local.get $9 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub + local.get $8 + i32.sub + local.set $8 local.get $3 - i32.const 2 - i32.shl + local.get $3 + i64.const 4503599627370496 + i64.eq + i32.const 1 i32.add + local.tee $5 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $5 + i32.sub + local.get $8 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $8 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + local.tee $8 + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_f64_s + local.tee $5 local.get $1 - i32.store - local.get $0 - local.get $1 + local.get $5 + f64.convert_i32_s + f64.ne + i32.add + i32.const 3 + i32.shr_s i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 + i32.add + local.tee $5 + i32.const 3 + i32.shl + local.tee $11 + i32.sub + global.set $~lib/util/number/_K + local.get $11 + i32.const 11480 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $5 + i32.const 1 + i32.shl + i32.const 12176 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and + local.set $2 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $4 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul local.get $2 - i32.store offset=12 + local.get $7 + i64.mul local.get $2 - ) - (func $std/array/ArrayU32#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 40 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $4 local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 + local.get $10 + i32.const 1 i32.shl + i32.add + local.get $0 + local.get $6 + local.get $3 + local.get $3 + i64.clz + i32.wrap_i64 + local.tee $0 + i64.extend_i32_s + i64.shl local.tee $3 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul + local.get $2 + local.get $7 + i64.mul local.get $2 - i32.const 0 local.get $3 - call $~lib/memory/memory.fill + i64.const 4294967295 + i64.and + local.tee $3 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $5 + local.get $9 local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $5 + local.get $8 + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $6 + global.get $~lib/util/number/_frc_minus + local.tee $3 + i64.const 32 + i64.shr_u + local.tee $4 + i64.mul local.get $2 - call $~lib/array/Array#set:buffer - local.get $0 + local.get $4 + i64.mul local.get $2 - i32.store offset=4 - local.get $0 local.get $3 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i64.const 4294967295 + i64.and + local.tee $2 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $3 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $6 + i64.mul + local.get $3 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $10 + call $~lib/util/number/genDigits + local.get $10 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $10 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $std/array/ArrayU8#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz + local.get $1 + f64.const 0 + f64.eq if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 41 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + return end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $0 - local.get $2 - call $~lib/array/Array#set:buffer - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - local.tee $0 local.get $1 - i32.const 255 - i32.and - local.tee $1 - i32.gt_u - local.get $0 local.get $1 - i32.lt_u - i32.sub - ) - (func $~lib/array/Array~visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 + f64.sub + f64.const 0 + f64.ne + if local.get $1 - local.get $2 - i32.lt_u + local.get $1 + f64.ne if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + return + else local.get $1 - i32.load - local.tee $3 + f64.const 0 + f64.lt + local.tee $2 if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $std/array/ArrayStr - block $std/array/Proxy - block $std/array/Ref - 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 $folding-inner4 $folding-inner0 $std/array/Ref $folding-inner4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid - end - return - end - return - end - return - end - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end local.get $0 - call $~lib/array/Array~visit - return + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + unreachable end local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end + local.get $1 + call $~lib/util/number/dtoa_core ) - (func $~setArgumentsLength (param $0 i32) + (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 - global.set $~argumentsLength - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/array - ) - (func $~stack_check + 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 13588 + i32.const 15044 i32.lt_s if - i32.const 30000 - i32.const 30048 + i32.const 31456 + i32.const 31504 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - ) - (func $std/array/assertSorted (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 - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 i32.const 0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$std/array/isSorted (result i32) + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinStringArray + local.get $5 i32.const 1 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 + 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 $2 local.get $3 + local.get $5 i32.lt_s if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $4 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $3 i32.const 2 - global.set $~argumentsLength - i32.const 0 - local.get $4 - local.get $5 - local.get $1 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - br_if $__inlined_func$std/array/isSorted - drop - local.get $2 + 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 $2 + local.set $3 br $for-loop|0 end end - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 942 - 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 - ) - (func $std/array/assertSortedDefault (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8336 - i32.store - local.get $0 - i32.const 8336 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/assertSorted<~lib/array/Array> (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $6 + local.get $1 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.load offset=16 i32.const 1 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 + 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 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $3 global.get $~lib/memory/__stack_pointer + local.get $7 local.get $3 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s + local.tee $4 + i32.store offset=4 + local.get $4 if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $2 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array> + 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 $2 + 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 $2 - br $for-loop|0 + local.set $3 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - i32.const 8 + 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 - i32.const 1 end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 942 - 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 + local.get $0 ) - (func $std/array/createReverseOrderedElementsArray (result i32) - (local $0 i32) + (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $0 + i32.load offset=12 + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.tee $2 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 25 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 - i32.const 2048 - call $~lib/memory/memory.fill - local.get $0 - local.get $1 - call $~lib/array/Array#set:buffer - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 2048 i32.store offset=8 - local.get $0 - i32.const 512 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - loop $for-loop|0 - local.get $2 - i32.const 512 + block $__inlined_func$~lib/util/string/joinReferenceArray + 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.sub + i32.const 12 + i32.add global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.const 8752 + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray + end + local.get $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 24 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store + local.tee $0 local.get $1 - i32.const 511 - local.get $2 - i32.sub + i32.load + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 + i32.const 12592 + i32.const 8752 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + select + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $std/array/createRandomString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 8752 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8752 - i32.store - loop $for-loop|0 - local.get $0 - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7312 - i32.store offset=4 - call $~lib/math/NativeMath.random - global.get $~lib/memory/__stack_pointer - i32.const 7312 - i32.store offset=8 - i32.const 7308 - i32.load - i32.const 1 - i32.shr_u - f64.convert_i32_s - f64.mul - f64.floor - i32.trunc_f64_s - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#charAt - local.get $4 - i32.const 7308 - i32.load - i32.const 1 - i32.shr_u - i32.ge_u - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - local.set $1 - br $__inlined_func$~lib/string/String#charAt - end + i32.const 8752 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8752 + i32.store offset=4 + i32.const 9036 + i32.load + i32.const 1 + i32.shr_u + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.gt_s + if global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $3 i32.const 2 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 + i32.shl + i32.add + i32.load + local.tee $4 i32.store - local.get $1 local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 12592 + i32.store offset=8 + local.get $4 + local.get $0 + i32.const 12592 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9040 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + local.get $3 i32.const 1 - i32.shl - i32.const 7312 - i32.add - i32.load16_u - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.set $3 + br $for-loop|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store + local.get $1 + if global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 12592 + i32.store offset=8 local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 + local.get $0 + i32.const 12592 call $~lib/string/String.__concat - local.tee $2 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + local.tee $0 + i32.store offset=4 end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_buffered (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.tee $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 0 i32.lt_s + local.tee $2 if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - return + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 end - local.get $3 - i32.eqz + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.lt_u 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 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 8752 - local.get $0 - select return end - i32.const 8752 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8752 - i32.store offset=4 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.gt_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 $5 - i32.store - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $5 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - local.get $4 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + 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 - local.set $4 - br $for-loop|0 + 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 - global.get $~lib/memory/__stack_pointer + local.set $1 local.get $0 local.get $3 - i32.const 2 - i32.shl + local.get $1 + local.get $2 i32.add - i32.load local.tee $0 - i32.store + call $~lib/util/number/utoa32_dec_lut local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 65535 + i32.and + i32.const 10 + i32.lt_u if - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 65535 + i32.and + 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.set $1 + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut local.get $1 ) - (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $2 - 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 $2 - 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 - i32.const 11136 - i32.const 8752 - local.get $0 - select - return - end - i32.const 8752 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8752 - i32.store offset=4 - i32.const 9036 - i32.load - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.gt_s + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u if - global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u i32.const 2 i32.shl + i32.const 9356 i32.add - i32.load - local.tee $5 - i32.store - local.get $5 - if - global.get $~lib/memory/__stack_pointer - i32.const 11136 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 11136 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end + i64.load32_u local.get $4 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 9040 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 9356 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 i32.const 1 + i32.shl i32.add - local.set $3 - br $for-loop|0 + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 9356 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 9356 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store local.get $0 - if - global.get $~lib/memory/__stack_pointer - i32.const 11136 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 11136 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 9040 - call $~lib/util/string/joinIntegerArray - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 9040 - call $~lib/util/string/joinReferenceArray<~lib/string/String|null> - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 - i32.lt_s + i64.const 10 + i64.lt_u if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 return end - local.get $2 - i32.eqz + local.get $1 + i64.const 4294967295 + i64.le_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store - local.get $0 + local.get $1 + i32.wrap_i64 + local.tee $3 + local.tee $2 + i32.const 100000 + i32.lt_u if (result i32) - local.get $0 - call $~lib/array/Array#toString + 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 - i32.const 8752 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 8752 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8752 - i32.store offset=4 - i32.const 9036 - i32.load - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 + 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.get $4 - i32.gt_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 - local.get $3 - if - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/array/Array#toString - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 + 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 - local.get $3 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + 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 - local.get $5 - if - global.get $~lib/memory/__stack_pointer + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) local.get $1 - i32.const 9040 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + 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 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 local.get $0 - i32.load offset=12 - i32.const 9040 - call $~lib/util/string/joinIntegerArray - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.lt_s + local.tee $3 + if + local.get $0 + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 + end local.get $1 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 - i32.lt_s + i64.const 10 + i64.lt_u if - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $3 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 return end - local.get $2 - i32.eqz + local.get $1 + i64.const 4294967295 + i64.le_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store - local.get $0 + local.get $1 + i32.wrap_i64 + local.tee $4 + local.tee $2 + i32.const 100000 + i32.lt_u if (result i32) - local.get $0 - call $~lib/array/Array#toString + 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 - i32.const 8752 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.set $2 + local.get $0 + local.get $4 + local.get $2 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 8752 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8752 - i32.store offset=4 - i32.const 9036 - i32.load - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.gt_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 - local.get $3 - if - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/array/Array#toString - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 + 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 - local.get $3 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + 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 - local.get $5 - if - global.get $~lib/memory/__stack_pointer + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) local.get $1 - i32.const 9040 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + 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 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + local.get $3 + i32.add + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 255 + i32.and + i32.const 10 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 local.get $1 - local.get $0 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + i32.const 255 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 + i32.const 255 + i32.and + 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.set $1 local.get $0 - i32.load offset=12 - i32.const 9040 - call $~lib/util/string/joinIntegerArray - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#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 $4 + local.get $0 + i32.load offset=12 + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $2 - i32.const 0 + i32.const 15044 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 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 - 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 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - if (result i32) - local.get $0 - call $~lib/array/Array#toString - else + 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 8752 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 8752 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8752 - i32.store offset=4 - i32.const 9036 - i32.load - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.gt_s + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 local.get $4 - i32.const 2 - i32.shl + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load - local.tee $3 - i32.store + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 10 + i32.add + i32.mul + i32.const 10 + 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 - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/array/Array#toString - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $1 - local.get $3 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 9040 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + 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 $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 end - local.get $4 - i32.const 1 + end + local.get $7 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 + i32.gt_s + if + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $4 - br $for-loop|0 + 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 - global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store + call $~lib/array/ensureSize local.get $0 i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store8 + local.get $0 + local.get $2 + i32.store offset=12 + local.get $2 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + (local $7 i32) + (local $8 i32) local.get $1 - i32.const 1 - i32.sub - local.tee $2 - 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 $2 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store - local.get $0 - if (result i32) - local.get $0 - call $~lib/array/Array<~lib/array/Array>#toString - else - i32.const 8752 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return + call $~lib/rt/tlsf/initialize end - i32.const 8752 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8752 - i32.store offset=4 - i32.const 9036 - i32.load + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 i32.const 1 - i32.shr_u - local.set $5 + i32.sub + local.set $4 loop $for-loop|0 - local.get $2 local.get $4 + i32.const 0 i32.gt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 local.get $4 - i32.const 2 - i32.shl + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $7 i32.add - i32.load - local.tee $3 - i32.store + i32.load8_u + local.set $3 + local.get $0 + local.get $4 + i32.add + i32.load8_u + local.set $6 + i32.const 2 + global.set $~argumentsLength local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/array/Array<~lib/array/Array>#toString - local.set $3 - global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.add local.get $3 - i32.store offset=8 + i32.store8 + local.get $0 + local.get $7 + i32.add + local.get $6 + i32.store8 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end + end + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s + if + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + local.get $0 + local.get $4 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $3 + local.get $1 + i32.store8 + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $5 local.get $1 - local.get $3 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end end - local.get $5 - if - global.get $~lib/memory/__stack_pointer + loop $while-continue|4 local.get $1 - i32.const 9040 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load8_u + local.set $3 + local.get $0 + local.get $1 + i32.add + i32.load8_u + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + i32.store8 + local.get $0 + local.get $6 + i32.store8 + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end end local.get $4 i32.const 1 - i32.add + i32.sub local.set $4 - br $for-loop|0 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/rt/tlsf/__free local.get $0 - local.get $2 + i32.load8_u offset=1 + local.set $1 + local.get $0 + local.get $0 + i32.load8_u + i32.store8 offset=1 + local.get $0 + local.get $1 + i32.store8 + ) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $3 i32.const 2 i32.shl i32.add - i32.load - local.tee $0 + local.get $1 i32.store local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array<~lib/array/Array>#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 - ) - (func $start:std/array - (local $0 i32) + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $2 + i32.store offset=12 + local.get $2 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + local.tee $0 + local.get $1 + i32.const 255 + i32.and + local.tee $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/array/Array~visit (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 f64) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 72 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=32 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=40 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=48 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=56 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=64 - memory.size - i32.const 16 - i32.shl - i32.const 29972 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1264 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1296 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1440 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $~lib/array/Array#constructor - global.set $std/array/arr - i32.const 0 - call $std/array/Ref#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new + i32.load offset=4 local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end end - local.get $1 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 local.get $0 - i32.const 0 - i32.const 1 - call $~lib/memory/memory.fill - local.get $1 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $std/array/ArrayStr + block $std/array/Proxy + block $std/array/Ref + 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 $folding-inner4 $folding-inner0 $std/array/Ref $folding-inner4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid + end + return + end + return + end + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end local.get $0 - call $~lib/array/Array#set:buffer - local.get $1 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~setArgumentsLength (param $0 i32) local.get $0 - i32.store offset=4 - local.get $1 + global.set $~argumentsLength + ) + (func $~start + global.get $~started + if + return + end i32.const 1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store + global.set $~started + call $start:std/array + ) + (func $std/array/assertSorted (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.add + i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1664 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.eqz + i32.const 15044 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 52 - i32.const 3 + 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 5 i32.const 0 - i32.const 6 - i32.const 1696 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1728 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 + i32.store local.get $0 local.get $1 - call $std/array/isArraysEqual + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$std/array/isSorted (result i32) + i32.const 1 + local.set $0 + local.get $2 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $4 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + local.set $5 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + local.get $4 + local.get $5 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + br_if $__inlined_func$std/array/isSorted + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 1 + end i32.eqz if i32.const 0 i32.const 1552 - i32.const 60 + i32.const 942 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1760 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertSortedDefault (param $0 i32) + (local $1 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 0 - i32.const 1552 - i32.const 63 - i32.const 3 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1792 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store local.get $1 - i32.store offset=8 + i32.const 8336 + i32.store local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 8336 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertSorted<~lib/array/Array> (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1552 - i32.const 66 - i32.const 3 + i32.store + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $2 + i32.store + block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) + local.get $0 + 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-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + local.set $0 + local.get $2 + i32.load offset=12 + local.set $5 + loop $for-loop|0 + local.get $0 + local.get $5 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/array/Array> + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 942 + 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 + return + end + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 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 - local.get $0 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1824 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store local.get $1 - i32.store offset=8 + i32.const 9040 + i32.store local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz + i32.const 9040 + call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) + (local $1 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 0 - i32.const 1552 - i32.const 69 - i32.const 3 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1856 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1888 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=12 + i32.const 9040 + i32.store local.get $0 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1936 - call $~lib/rt/__newArray - local.set $1 + i32.const 9040 + call $~lib/array/Array<~lib/string/String|null>#join global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1984 - call $~lib/rt/__newArray - local.set $1 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 2032 - call $~lib/rt/__newArray - local.set $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz + i32.const 15044 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 85 - i32.const 3 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 2080 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 + local.tee $1 i32.const 0 - call $~lib/array/Array#fill - drop - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 2128 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 + i32.store local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 + i32.const 9040 i32.store local.get $0 - i32.load offset=12 - if - i32.const 0 - i32.const 1552 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 9040 + call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - if - i32.const 0 - i32.const 1552 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 42 - call $~lib/array/Array#push - drop + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne + i32.const 15044 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 102 - i32.const 3 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 + local.tee $1 + i32.const 0 i32.store - local.get $0 - i32.load offset=12 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 + local.get $1 + i32.const 9040 i32.store local.get $0 - call $std/array/internalCapacity - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 9040 + call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result 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 - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - if + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 - i32.const 1552 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 1 - i32.ne - if + i32.store + local.get $2 + i32.const 9040 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=12 + local.set $0 + local.get $2 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 i32.const 0 - i32.const 1552 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8752 + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + local.get $0 + call $~lib/array/Array#toString + else + i32.const 8752 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + i32.const 8752 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8752 + i32.store offset=4 + i32.const 9036 + i32.load + i32.const 1 + i32.shr_u + local.set $5 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/array/Array#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9040 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/array/Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 + i32.const 31456 + i32.const 31504 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/builtins/abort + unreachable + ) + (func $start:std/array + (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 i64) + (local $9 i32) + (local $10 i32) + (local $11 f32) + (local $12 f64) + (local $13 f32) + (local $14 f64) global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if + i32.const 72 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner2 + 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 + local.get $1 + i64.const 0 + i64.store offset=32 + local.get $1 + i64.const 0 + i64.store offset=40 + local.get $1 + i64.const 0 + i64.store offset=48 + local.get $1 + i64.const 0 + i64.store offset=56 + local.get $1 + i64.const 0 + i64.store offset=64 + memory.size + i32.const 16 + i32.shl + i32.const 31428 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace i32.const 0 - i32.const 1552 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 44 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 2 - i32.ne - if + call $~lib/array/Array#constructor + global.set $std/array/arr i32.const 0 - i32.const 1552 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if + call $std/array/Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + 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 + local.tee $1 i32.const 0 - i32.const 1552 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if + i32.store + local.get $1 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $0 + 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 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + end + local.get $1 i32.const 0 - i32.const 1552 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 45 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.ne - if + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 127 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 3 - i32.ne - if i32.const 0 - i32.const 1552 - i32.const 128 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if + call $~lib/rt/itcms/__link + local.get $1 i32.const 0 - i32.const 1552 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if + i32.store offset=4 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 130 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1 i32.const 0 - i32.const 1552 - i32.const 131 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/array/Array#set:length - local.get $0 - i32.load offset=12 - if + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 139 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 2224 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=12 - local.get $0 - i32.const 0 - call $~lib/array/Array#at - i32.const 1 - i32.ne - if + i32.const 1 + call $~lib/memory/memory.fill + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/array/Array#at - i32.const 4 - i32.ne - if + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + 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.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 1664 + i32.store + local.get $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 0 - i32.const 1552 - i32.const 148 + i32.const 6 + i32.const 1696 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - call $~lib/array/Array#at - i32.const 4 - i32.ne - if + call $~lib/array/Array#fill + drop + i32.const 5 i32.const 0 - i32.const 1552 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -4 - call $~lib/array/Array#at - i32.const 1 - i32.ne - if + i32.const 6 + i32.const 1728 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1552 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/array/Array#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - call $~lib/array/Array#concat - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - local.get $2 - call $std/array/internalCapacity - i32.const 3 - i32.ne - if i32.const 0 - i32.const 1552 - i32.const 159 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - local.get $2 - i32.load offset=12 - i32.const 3 - i32.ne - if + i32.const 2147483647 + call $~lib/array/Array#fill + drop + i32.const 5 i32.const 0 - i32.const 1552 - i32.const 160 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 3 - i32.ne - if + i32.const 6 + i32.const 1760 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.const 0 - i32.const 1552 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2272 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - call $~lib/array/Array#concat - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - local.get $2 - call $std/array/internalCapacity - i32.const 3 - i32.ne - if + i32.const -3 + call $~lib/array/Array#fill + drop + i32.const 5 i32.const 0 - i32.const 1552 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if + i32.const 6 + i32.const 1792 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#fill + drop + i32.const 5 i32.const 0 - i32.const 1552 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if + i32.const 6 + i32.const 1824 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1552 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if + i32.const 1 i32.const 0 - i32.const 1552 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 46 - call $~lib/array/Array#push - drop - local.get $1 - i32.const 47 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - call $~lib/array/Array#concat - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $2 - i32.store - local.get $2 - call $std/array/internalCapacity - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 175 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 176 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 5 - i32.ne - if + call $~lib/array/Array#fill + drop + i32.const 5 i32.const 0 - i32.const 1552 - i32.const 177 + i32.const 6 + i32.const 1856 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1888 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.set $4 + i32.const 1 + local.get $1 + i32.load offset=12 + local.tee $2 + local.get $2 + i32.const 1 + i32.gt_s + select + local.set $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 178 + local.get $2 + local.get $2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if + i32.gt_s + select + local.set $2 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 1 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1936 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 79 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $2 i32.const 0 - i32.const 1552 - i32.const 179 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if + local.get $1 + i32.load offset=12 + local.tee $4 + local.get $4 i32.const 0 - i32.const 1552 - i32.const 180 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 46 - i32.ne - if + i32.gt_s + select + local.set $0 + 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 + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|02 + end + end + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1984 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 1552 - i32.const 181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/array/Array#__get - i32.const 47 - i32.ne - if + local.get $1 + i32.load offset=12 + local.tee $2 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 182 + i32.gt_s + select + local.set $0 + local.get $2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/array/Array#pop - drop - local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne - if + i32.sub + local.tee $2 i32.const 0 - i32.const 1552 - i32.const 185 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2304 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - if + local.get $2 i32.const 0 - i32.const 1552 - i32.const 193 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - call $~lib/array/Array#concat - local.tee $1 - i32.store offset=16 - local.get $1 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 195 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - if + i32.gt_s + select + local.set $2 + loop $for-loop|04 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 1 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|04 + end + end + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 2032 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.sub + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 196 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2336 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const 3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2384 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + local.get $0 i32.const 0 - i32.const 1552 - i32.const 203 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2432 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 1 - i32.const 3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2480 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.gt_s + select + local.set $0 + loop $for-loop|06 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 2 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|06 + end + end + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 2080 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.tee $0 + i32.load offset=4 + local.set $4 + i32.const 1 + local.get $1 + i32.load offset=12 + local.tee $2 + local.get $2 + i32.const 1 + i32.gt_s + select + local.set $1 i32.const 0 - i32.const 1552 - i32.const 205 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2528 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 1 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2576 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + local.get $2 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 207 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2624 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 2 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2672 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 209 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2720 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2768 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.gt_s + select + 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 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|08 + end + end + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 2128 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + if + i32.const 0 + i32.const 1552 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 42 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 211 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2816 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2864 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 102 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 43 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 213 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2912 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2960 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 215 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3008 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3056 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 44 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 217 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 45 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3104 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3152 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 219 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3200 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3248 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 128 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 221 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3296 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3344 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 130 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 131 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 2 + i32.const 2 + i32.const 8 i32.const 0 - i32.const 1552 - i32.const 223 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3392 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const -4 - i32.const -3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3440 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=16 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 42 - call $~lib/array/Array#unshift - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne - if i32.const 0 - i32.const 1552 - i32.const 233 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 4 - i32.ne - if + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 i32.const 0 - i32.const 1552 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $1 + local.get $0 + i32.store offset=16 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if + i32.const 2 + call $~lib/array/ensureSize + local.get $0 i32.const 0 - i32.const 1552 - i32.const 236 + i32.store offset=12 + local.get $0 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 139 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if + i32.const 2224 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=12 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 237 + call $~lib/array/Array#at + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if + call $~lib/array/Array#at + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const -1 + call $~lib/array/Array#at + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const -4 + call $~lib/array/Array#at + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1552 - i32.const 238 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 41 - call $~lib/array/Array#unshift - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 242 + call $~lib/array/Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#concat + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 243 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 41 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 244 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 245 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 246 + i32.const 2272 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/array/Array#concat + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 164 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1552 - i32.const 247 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 46 + call $~lib/array/Array#push + drop + local.get $2 + i32.const 47 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#concat + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 4 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 175 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 176 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 177 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1552 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.lt_s - if - i32.const 2176 - i32.const 1104 - i32.const 328 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $1 - i32.load - local.get $1 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $4 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - global.set $std/array/i - global.get $std/array/i - i32.const 41 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 257 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 178 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 179 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 180 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne - if + call $~lib/array/Array#__get + i32.const 46 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + call $~lib/array/Array#__get + i32.const 47 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/array/Array#pop + drop + local.get $0 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 185 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1552 - i32.const 258 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 259 + i32.const 2304 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $2 + local.get $1 + call $~lib/array/Array#concat + local.tee $1 + i32.store offset=16 + local.get $1 + i32.load offset=12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 260 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 195 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 196 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if + i32.const 2336 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 261 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 262 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if + i32.const 2384 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 263 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - global.set $std/array/i - global.get $std/array/i - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 267 + i32.const 2432 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 268 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 5 - i32.ne - if + i32.const 2480 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 269 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 205 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 270 + i32.const 2528 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 1 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if + i32.const 2576 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 271 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 207 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 272 + i32.const 2624 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 2 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3488 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#slice - local.tee $2 - i32.store offset=16 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3536 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 2672 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 282 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 209 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.const 4 - call $~lib/array/Array#slice - local.tee $2 - i32.store offset=16 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3568 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 2720 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 285 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/array/Array#slice - local.tee $2 - i32.store offset=16 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3600 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 288 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 2768 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 291 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#slice - local.tee $2 - i32.store offset=16 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3648 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 294 + i32.const 2816 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.const -1 - call $~lib/array/Array#slice - local.tee $2 - i32.store offset=16 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3680 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2864 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 297 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const -3 - i32.const -1 - call $~lib/array/Array#slice - local.tee $2 - i32.store offset=16 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3712 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 2912 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2960 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 300 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 215 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const -3 - call $~lib/array/Array#slice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=12 - if + i32.const 3008 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 302 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 10 - i32.const 2147483647 - call $~lib/array/Array#slice - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - if + i32.const 3056 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 303 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 217 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $1 - if + i32.const 3104 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3152 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.sub + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 2 - i32.shl - i32.add - local.set $1 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.gt_u - if - local.get $2 - i32.load - local.set $0 - local.get $2 - local.get $1 - i32.load - i32.store - local.get $1 - local.get $0 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 4 - i32.sub - local.set $1 - br $while-continue|0 - end - end - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 311 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 312 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 313 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 314 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 315 + i32.const 3200 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 44 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 44 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - if + i32.const 3248 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 325 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 221 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 42 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 328 + i32.const 3296 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 45 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if + i32.const 3344 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 331 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const 100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 334 + i32.const 3392 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const -4 + i32.const -3 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if + i32.const 3440 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 337 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 340 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 343 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 346 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const 1 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 349 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const 2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 352 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 3744 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.set $1 - block $__inlined_func$~lib/array/Array#indexOf - local.get $0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 42 + call $~lib/array/Array#unshift + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.load offset=12 - local.tee $2 - i32.const 0 - i32.le_s - i32.const 1 - local.get $2 - select + i32.const 4 + i32.ne if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#indexOf + i32.const 0 + i32.const 1552 + i32.const 233 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|022 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - f32.const nan:0x400000 - f32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|022 - end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 354 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - i32.const 10 - i32.const 3776 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.set $1 - block $__inlined_func$~lib/array/Array#indexOf - local.get $0 - i32.load offset=12 - local.tee $2 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.le_s + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 1 - local.get $2 - select + call $~lib/array/Array#__get + i32.const 43 + i32.ne if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#indexOf + i32.const 0 + i32.const 1552 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|023 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - f64.const nan:0x8000000000000 - f64.eq - br_if $__inlined_func$~lib/array/Array#indexOf - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|023 - end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 355 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3808 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 2 - call $~lib/array/Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 362 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 7 - call $~lib/array/Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 363 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/array/Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 364 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 2 - call $~lib/array/Array#lastIndexOf - if + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 238 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 41 + call $~lib/array/Array#unshift + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 242 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 243 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 365 + call $~lib/array/Array#__get + i32.const 41 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 244 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 246 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -2 - call $~lib/array/Array#lastIndexOf - if + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 247 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $5 + i32.store + local.get $5 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.lt_s + if + i32.const 2176 + i32.const 1104 + i32.const 328 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=4 + local.tee $4 + i32.load + local.get $4 + local.get $4 + i32.const 4 + i32.add + local.get $1 + i32.const 1 + i32.sub + local.tee $0 + i32.const 2 + i32.shl + local.tee $1 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.add i32.const 0 - i32.const 1552 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -1 - call $~lib/array/Array#lastIndexOf - i32.const 3 - i32.ne - if + i32.store + local.get $5 + local.get $0 + i32.store offset=12 + global.set $std/array/i + global.get $std/array/i + i32.const 41 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 257 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 259 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 367 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 260 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 261 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 44 - i32.const 0 - call $~lib/array/Array#indexOf - i32.const 0 - i32.lt_s - if - i32.const 0 - i32.const 1552 - i32.const 375 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 263 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + global.set $std/array/i + global.get $std/array/i + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 267 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 42 - i32.const 0 - call $~lib/array/Array#indexOf - i32.const 0 - i32.lt_s - if + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 269 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 378 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 271 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 272 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 45 - i32.const 0 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - if - i32.const 0 - i32.const 1552 - i32.const 381 + i32.const 3488 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#slice + local.tee $1 + i32.store offset=16 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const 100 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - if - i32.const 0 - i32.const 1552 - i32.const 384 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf - i32.const 0 - i32.lt_s - if + i32.const 3536 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 387 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 282 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 4 + call $~lib/array/Array#slice + local.tee $1 + i32.store offset=16 + i32.const 2 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.lt_s - if + i32.const 3568 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf - i32.const 0 - i32.lt_s - if - i32.const 0 - i32.const 1552 - i32.const 393 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 285 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 5 + call $~lib/array/Array#slice + local.tee $1 + i32.store offset=16 + i32.const 4 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const 0 - call $~lib/array/Array#indexOf - i32.const 0 - i32.lt_s - if + i32.const 3600 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 396 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const 1 - call $~lib/array/Array#indexOf - i32.const 0 - i32.lt_s - if + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 288 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 0 - i32.const 1552 - i32.const 399 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 43 - i32.const 2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.lt_s - if + i32.const 2147483647 + call $~lib/array/Array#slice + local.tee $1 + i32.store offset=16 + local.get $1 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 402 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#slice + local.tee $1 + i32.store offset=16 + i32.const 2 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 3856 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/array/Array#includes (result i32) - i32.const 0 - local.set $2 - i32.const 0 + i32.const 3648 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - i32.le_s - i32.const 1 - local.get $3 - select - br_if $__inlined_func$~lib/array/Array#includes - drop + i32.store offset=8 + local.get $1 local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|033 - local.get $2 - local.get $3 - i32.lt_s - if - i32.const 1 - i32.const 1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $5 - local.get $5 - f32.ne - local.get $5 - f32.const nan:0x400000 - f32.eq - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|033 - end - end - i32.const 0 - end - i32.eqz - if i32.const 0 - i32.const 1552 - i32.const 404 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const -1 + call $~lib/array/Array#slice + local.tee $1 + i32.store offset=16 + i32.const 2 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - i32.const 10 - i32.const 3888 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/array/Array#includes (result i32) - i32.const 0 - local.set $2 - i32.const 0 + i32.const 3680 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - i32.le_s - i32.const 1 - local.get $3 - select - br_if $__inlined_func$~lib/array/Array#includes - drop + i32.store offset=8 + local.get $1 local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|034 - local.get $2 - local.get $3 - i32.lt_s - if - i32.const 1 - i32.const 1 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $6 - local.get $6 - f64.ne - local.get $6 - f64.const nan:0x8000000000000 - f64.eq - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|034 - end - end - i32.const 0 - end - i32.eqz - if i32.const 0 - i32.const 1552 - i32.const 405 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 297 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const -3 + i32.const -1 + call $~lib/array/Array#slice + local.tee $1 + i32.store offset=16 + i32.const 2 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/array/Array#splice - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 409 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 410 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if + i32.const 3712 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 411 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -1 + i32.const -3 + call $~lib/array/Array#slice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 10 + i32.const 2147483647 + call $~lib/array/Array#slice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.load offset=12 + local.tee $1 + if + local.get $2 + i32.load offset=4 + local.set $0 + local.get $2 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $6 + loop $while-continue|0 + local.get $0 + local.get $6 + i32.lt_u + if + local.get $0 + i32.load + local.set $1 + local.get $0 + local.get $6 + i32.load + i32.store + local.get $6 + local.get $1 + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $6 + i32.const 4 + i32.sub + local.set $6 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 311 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 312 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 412 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3920 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3968 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 313 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 314 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 315 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 43 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 44 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store i32.const 0 - i32.const 1552 - i32.const 419 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4016 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 420 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4048 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4096 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 423 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4128 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 424 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4176 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 4224 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 427 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 4256 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 428 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4288 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 4336 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|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.load + i32.const 44 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|09 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + if + i32.const 0 + i32.const 1552 + i32.const 325 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store i32.const 0 - i32.const 1552 - i32.const 431 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 4368 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf10 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf10 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|011 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 42 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf10 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|011 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 328 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store i32.const 0 - i32.const 1552 - i32.const 432 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4400 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4448 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf12 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf12 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|013 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 45 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf12 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|013 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 331 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + i32.const 100 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf14 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 100 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf14 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|015 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf14 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|015 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 334 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + block $__inlined_func$~lib/array/Array#indexOf16 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const -100 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf16 + end + local.get $2 + i32.const 100 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|017 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|017 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 337 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + block $__inlined_func$~lib/array/Array#indexOf18 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const -2 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf18 + end + local.get $2 + i32.const 2 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|019 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf18 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|019 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 340 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + block $__inlined_func$~lib/array/Array#indexOf20 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const -4 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf20 + end + local.get $2 + i32.const 4 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|021 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf20 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|021 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 343 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + i32.const 0 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf22 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf22 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf22 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|023 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + i32.const 1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf24 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf24 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|025 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf24 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|025 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 349 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + i32.const 2 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf26 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf26 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|027 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf26 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|027 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 352 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 3744 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf + local.get $2 + i32.load offset=12 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $2 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + 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 $__inlined_func$~lib/array/Array#indexOf + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|024 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 354 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 3 + i32.const 10 + i32.const 3776 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf + local.get $2 + i32.load offset=12 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $2 + i32.load offset=4 + local.set $2 + loop $while-continue|02528 + 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 $__inlined_func$~lib/array/Array#indexOf + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02528 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 355 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 3808 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.load offset=12 + local.set $2 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf + local.get $1 + i32.load offset=12 + local.tee $4 + i32.eqz + br_if $__inlined_func$~lib/array/Array#lastIndexOf + local.get $2 + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $4 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + loop $while-continue|01 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $4 + local.get $2 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|01 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 362 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.load offset=12 + local.set $2 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf6 + local.get $1 + i32.load offset=12 + local.tee $4 + i32.eqz + br_if $__inlined_func$~lib/array/Array#lastIndexOf6 + local.get $2 + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $4 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + loop $while-continue|07 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $4 + local.get $2 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 7 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf6 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|07 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 363 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#lastIndexOf8 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf8 + end + local.get $0 + i32.const 1 + i32.sub + i32.const 3 + local.get $0 + i32.const 3 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|029 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf8 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|029 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 364 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#lastIndexOf30 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf30 + end + local.get $0 + i32.const 1 + i32.sub + i32.const 2 + local.get $0 + i32.const 2 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|031 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf30 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|031 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1552 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#lastIndexOf32 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf32 + end + local.get $0 + i32.const 2 + i32.sub + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf32 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|033 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1552 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#lastIndexOf34 + local.get $1 + local.tee $0 + i32.load offset=12 + local.tee $1 + i32.eqz + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#lastIndexOf34 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|035 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf34 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|035 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + i32.const 0 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf9 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 0 + i32.le_s + i32.const 1 + local.get $0 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf9 + end + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|010 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 44 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf9 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|010 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 1552 + i32.const 375 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + i32.const 0 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf13 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 0 + i32.le_s + i32.const 1 + local.get $0 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf13 + end + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|014 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 42 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf13 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|014 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 1552 + i32.const 378 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + i32.const 0 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf17 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 0 + i32.le_s + i32.const 1 + local.get $0 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf17 + end + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|018 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 45 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf17 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|018 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const 0 + i32.ge_s + if + i32.const 0 + i32.const 1552 + i32.const 381 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + i32.const 100 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf21 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 100 + i32.le_s + i32.const 1 + local.get $0 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf21 + end + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|022 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf21 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|022 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const 0 + i32.ge_s + if + i32.const 0 + i32.const 1552 + i32.const 384 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + block $__inlined_func$~lib/array/Array#indexOf25 + local.get $1 + i32.load offset=12 + local.tee $2 + i32.const -100 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#indexOf25 + end + local.get $2 + i32.const 100 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|026 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf25 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|026 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 1552 + i32.const 387 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + block $__inlined_func$~lib/array/Array#indexOf28 + local.get $1 + i32.load offset=12 + local.tee $2 + i32.const -2 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#indexOf28 + end + local.get $2 + i32.const 2 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|030 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf28 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|030 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 0 - i32.const 1552 - i32.const 435 + i32.lt_s + if + i32.const 0 + i32.const 1552 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + block $__inlined_func$~lib/array/Array#indexOf32 + local.get $1 + i32.load offset=12 + local.tee $2 + i32.const -4 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#indexOf32 + end + local.get $2 + i32.const 4 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|034 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf32 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|034 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 1552 + i32.const 393 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + i32.const 0 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf36 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 0 + i32.le_s + i32.const 1 + local.get $0 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf36 + end + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|037 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf36 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|037 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 1552 + i32.const 396 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + i32.const 1 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf39 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_s + i32.const 1 + local.get $0 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf39 + end + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|040 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf39 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|040 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 1552 + i32.const 399 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + i32.const 2 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf42 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_s + i32.const 1 + local.get $0 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf42 + end + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|043 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 43 + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf42 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|043 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 3856 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/array/Array#includes (result i32) + i32.const 0 + local.set $1 + i32.const 0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + i32.le_s + i32.const 1 + local.get $2 + select + br_if $__inlined_func$~lib/array/Array#includes + drop + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|02644 + 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 $__inlined_func$~lib/array/Array#includes + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02644 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 404 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4480 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 10 + i32.const 3888 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/array/Array#includes (result i32) + i32.const 0 + local.set $1 + i32.const 0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + i32.le_s + i32.const 1 + local.get $2 + select + br_if $__inlined_func$~lib/array/Array#includes + drop + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|02736 + 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 $__inlined_func$~lib/array/Array#includes + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02736 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 405 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + i32.const 1 + call $~lib/array/Array#splice + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 409 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 410 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 436 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 411 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 412 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4528 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -1 - i32.const 2147483647 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4576 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 3920 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 439 + i32.const 2147483647 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4608 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 3968 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 440 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 419 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4656 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 4704 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4016 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 443 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 420 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 4736 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4048 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 444 + i32.const 0 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4768 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4816 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4096 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 447 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 423 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4848 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4128 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 448 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 424 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4896 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -7 - i32.const 1 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4944 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4176 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 4224 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 451 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 427 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4976 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4256 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 452 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 428 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5024 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 5072 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4288 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 4336 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 455 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 431 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5104 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 2 + i32.const 3 + i32.const 4368 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 456 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 432 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5152 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 5200 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4400 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 459 + i32.const 1 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5232 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4448 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 460 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 435 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5280 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 5328 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4480 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 463 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 436 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5360 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4528 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 2147483647 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4576 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 464 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 439 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5408 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 7 - i32.const 0 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 5456 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4608 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 467 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5488 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4656 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 4704 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 468 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 443 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5536 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 7 - i32.const 5 - call $~lib/array/Array#splice - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 5584 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $1 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 2 + i32.const 3 + i32.const 4736 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 471 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 444 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5616 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if + i32.const 4768 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4816 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 472 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 447 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 8 - i32.const 5664 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/array/Array#splice - local.tee $1 - i32.store offset=12 - local.get $1 - i32.load offset=12 - if + i32.const 4848 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 476 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 448 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - if + i32.const 4896 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const -7 + i32.const 1 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4944 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 477 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 451 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=24 - local.get $0 - i32.const 0 - i32.const 1 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 2 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.const 2 - i32.const 3 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.const 3 - i32.const 4 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.const 4 - i32.const 5 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/array/Array#splice - local.tee $1 - i32.store offset=12 - local.get $1 - i32.load offset=12 - i32.const 2 - i32.ne - if + i32.const 4976 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 482 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 452 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.load - i32.const 3 - i32.ne - if + i32.const 5024 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const -2 + i32.const -1 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - i32.const 1552 - i32.const 483 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/array/Array#__get - i32.load - i32.const 4 - i32.ne - if + i32.const 5072 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 484 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 455 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 3 - i32.ne - if + i32.const 5104 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 486 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 456 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.load - i32.const 1 - i32.ne - if + i32.const 5152 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -2 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - i32.const 1552 - i32.const 487 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.load - i32.const 2 - i32.ne - if + i32.const 5200 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 488 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 459 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.load - i32.const 5 - i32.ne - if + i32.const 5232 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 489 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 460 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.const 1 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#__uset - local.get $0 - i32.const 2 - i32.const 2 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#splice - local.tee $1 - i32.store offset=24 - local.get $1 - i32.load offset=12 - i32.const 1 - i32.ne - if + i32.const 5280 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 4 i32.const 0 - i32.const 1552 - i32.const 494 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - local.tee $1 - i32.store offset=28 - local.get $1 - i32.eqz - if - i32.const 5824 - i32.const 1552 - i32.const 495 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - i32.const 1 - i32.ne - if + i32.const 5328 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 495 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + i32.const 5360 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 497 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 464 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - if + i32.const 5408 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 7 i32.const 0 - i32.const 1552 - i32.const 498 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=28 - local.get $0 - i32.eqz - if - i32.const 5824 - i32.const 1552 - i32.const 499 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - i32.const 2 - i32.ne - if + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - i32.const 1552 - i32.const 499 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - i32.const 2 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 5888 - i32.store offset=8 - local.get $0 - i32.const 5888 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - if + i32.const 5456 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 512 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 467 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 5920 - i32.store offset=8 - local.get $0 - i32.const 5920 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if + i32.const 5488 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 515 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 468 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 5952 - i32.store offset=8 - local.get $0 - i32.const 5952 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if + i32.const 5536 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 7 + i32.const 5 + call $~lib/array/Array#splice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - i32.const 1552 - i32.const 518 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 5984 - i32.store offset=8 - local.get $0 - i32.const 5984 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if + i32.const 5584 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 526 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 471 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if + i32.const 5616 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 472 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 8 + i32.const 5664 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array#splice + local.tee $1 + i32.store offset=12 + local.get $1 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 476 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 477 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 5 + i32.const 2 + i32.const 8 i32.const 0 - i32.const 1552 - i32.const 527 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6016 - i32.store offset=8 - local.get $0 - i32.const 6016 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - if + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=24 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 529 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6048 - i32.store offset=8 - local.get $0 - i32.const 6048 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 542 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + i32.const 4 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 4 + i32.const 5 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/array/Array#splice + local.tee $1 + i32.store offset=12 + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 482 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 0 - i32.const 1552 - i32.const 543 + call $~lib/array/Array#__get + i32.load i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6080 - i32.store offset=8 - local.get $0 - i32.const 6080 - call $~lib/array/Array#every - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 553 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 483 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.load + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6112 - i32.store offset=8 - local.get $0 - i32.const 6112 - call $~lib/array/Array#every - if + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1552 - i32.const 556 + call $~lib/array/Array#__get + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 487 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 488 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.load + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 489 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6144 - i32.store offset=8 - local.get $0 - i32.const 6144 - call $~lib/array/Array#every - i32.const 1 - i32.ne - if + i32.const 2 + i32.const 11 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=20 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 i32.const 0 - i32.const 1552 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6176 - i32.store offset=8 - local.get $0 - i32.const 6176 - call $~lib/array/Array#every - if + call $~lib/array/Array#__uset + local.get $1 + i32.const 2 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + local.get $1 + i32.store offset=20 + 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 15044 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6208 - i32.store offset=8 - local.get $0 - i32.const 6208 - call $~lib/array/Array#every - i32.const 1 - i32.ne - if + i32.store i32.const 0 - i32.const 1552 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + local.get $1 + i32.load offset=12 + local.tee $9 + local.get $9 i32.const 0 - i32.const 1552 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6240 - i32.store offset=8 - local.get $0 - i32.const 6240 - call $~lib/array/Array#some - i32.const 1 - i32.ne - if + i32.gt_s + select + local.set $5 + local.get $0 + i32.const 1 + local.get $9 + local.get $5 + i32.sub + local.tee $0 + local.get $0 + i32.const 1 + i32.gt_s + select + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 591 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6272 - i32.store offset=8 - local.get $0 - i32.const 6272 - call $~lib/array/Array#some - if + local.get $0 i32.const 0 - i32.const 1552 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6304 - i32.store offset=8 - local.get $0 - i32.const 6304 - call $~lib/array/Array#some - if + i32.gt_s + select + local.tee $3 + i32.const 2 + i32.const 11 i32.const 0 - i32.const 1552 - i32.const 602 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if + call $~lib/rt/__newArray + local.tee $7 + i32.store + local.get $7 + i32.load offset=4 + local.get $1 + i32.load offset=4 + local.tee $2 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $3 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $9 + local.get $3 + local.get $5 + i32.add + local.tee $5 + i32.ne + if + local.get $0 + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $9 + local.get $5 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + end + local.get $1 + local.get $9 + local.get $3 + 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 + i32.store offset=24 + local.get $7 + i32.load offset=12 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 494 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 0 - i32.const 1552 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6336 - i32.store offset=8 - local.get $0 - i32.const 6336 - call $~lib/array/Array#some - i32.const 1 - i32.ne - if + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=28 + local.get $0 + i32.eqz + if + i32.const 5824 + i32.const 1552 + i32.const 495 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 495 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 497 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 0 - i32.const 1552 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - local.get $0 - i32.const 6368 - call $~lib/array/Array#some - if + call $~lib/array/Array#__get + if + i32.const 0 + i32.const 1552 + i32.const 498 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + local.tee $1 + i32.store offset=28 + local.get $1 + i32.eqz + if + i32.const 5824 + i32.const 1552 + i32.const 499 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 499 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if i32.const 0 - i32.const 1552 - i32.const 619 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6400 - i32.store offset=8 - local.get $0 - i32.const 6400 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 630 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6432 - i32.store offset=8 - local.get $0 - i32.const 6432 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.ne - if + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 5888 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 639 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if + local.set $1 + local.get $4 + 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 + i32.load offset=12 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5888 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#findIndex + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|037 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + if + i32.const 0 + i32.const 1552 + i32.const 512 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 5920 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 640 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6464 - i32.store offset=8 - local.get $0 - i32.const 6464 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 406 - i32.ne - if + local.set $1 + local.get $4 + 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 + i32.load offset=12 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5920 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#findIndex38 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|039 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 515 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 5952 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 643 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6496 - i32.store offset=8 - local.get $0 - i32.const 6496 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 1 - i32.ne - if + local.set $1 + local.get $4 + 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 + i32.load offset=12 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5952 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#findIndex40 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|041 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 518 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 5984 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 657 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + local.set $1 + local.get $4 + 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 + i32.load offset=12 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5984 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#findIndex42 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|043 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 526 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 527 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6016 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 658 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6528 - i32.store offset=8 - local.get $0 - i32.const 6528 - call $~lib/array/Array#forEach - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 100 - i32.ne - if + local.set $1 + local.get $4 + 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 + i32.load offset=12 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 6016 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#findIndex44 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|045 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + if + i32.const 0 + i32.const 1552 + i32.const 529 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6048 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 683 + local.set $1 + local.get $4 + 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 + i32.load offset=12 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 6048 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#findIndex46 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|047 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 542 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 543 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6080 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#every (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|048 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6080 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $__inlined_func$~lib/array/Array#every + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|048 + end + end + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 553 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6112 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#every49 (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|050 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6112 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $__inlined_func$~lib/array/Array#every49 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|050 + end + end + i32.const 1 + end + if + i32.const 0 + i32.const 1552 + i32.const 556 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6144 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#every51 (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|052 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6144 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $__inlined_func$~lib/array/Array#every51 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|052 + end + end + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6176 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#every53 (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|054 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6176 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $__inlined_func$~lib/array/Array#every53 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|054 + end + end + i32.const 1 + end + if + i32.const 0 + i32.const 1552 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6208 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#every55 (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|056 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6208 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $__inlined_func$~lib/array/Array#every55 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|056 + end + end + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|0 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store local.get $1 - i32.const 100 - i32.lt_s + i32.const 6240 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#some (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|057 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6240 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#some + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|057 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 591 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6272 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#some58 (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|059 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6272 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#some58 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|059 + end + end + i32.const 0 + end + if + i32.const 0 + i32.const 1552 + i32.const 594 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6304 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#some60 (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|061 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6304 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#some60 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|061 + end + end + i32.const 0 + end + if + i32.const 0 + i32.const 1552 + i32.const 602 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6336 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#some62 (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|063 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6336 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#some62 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|063 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $5 + i32.store + local.get $1 + i32.const 6368 + i32.store offset=8 + block $__inlined_func$~lib/array/Array#some64 (result i32) + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=12 + local.set $4 + loop $for-loop|065 + local.get $0 + local.get $4 + local.get $5 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $5 + i32.load offset=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 6368 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/array/Array#some64 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|065 + end + end + i32.const 0 + end if - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.const 1552 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6560 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=12 - local.tee $3 - i32.const 2 - i32.const 9 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - local.set $7 - loop $for-loop|051 - local.get $0 - local.get $3 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store local.get $1 i32.load offset=12 - local.tee $8 - local.get $3 - local.get $8 - i32.lt_s - select - i32.lt_s + i32.const 2 + i32.ne if - local.get $0 - i32.const 2 - i32.shl - local.tee $8 - local.get $1 - i32.load offset=4 - i32.add - i32.load - local.set $9 + i32.const 0 + i32.const 1552 + i32.const 619 i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $8 - i32.add - local.get $9 - local.get $0 - local.get $1 - i32.const 6560 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_f32) - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|051 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=24 - local.get $2 - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 697 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/array/Array#__get - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1552 - i32.const 698 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6592 - i32.store offset=8 - local.get $0 - i32.const 6592 - call $~lib/array/Array#map - global.get $std/array/i - i32.const 6 - i32.ne - if + call $~lib/array/Array#push + drop i32.const 0 - i32.const 1552 - i32.const 707 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6400 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 708 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6624 - i32.store offset=8 - local.get $0 - i32.const 6624 - call $~lib/array/Array#map - global.get $std/array/i - i32.const 406 - i32.ne - if + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|066 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $4 + i32.const 6400 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|066 + end + end + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 715 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6656 - i32.store offset=8 - local.get $0 - i32.const 6656 - call $~lib/array/Array#map - global.get $std/array/i - i32.const 1 - i32.ne - if + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6432 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 730 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|068 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $4 + i32.const 6432 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|068 + end + end + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 639 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 640 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 731 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6688 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 6688 - call $~lib/array/Array#filter - local.tee $0 - i32.store offset=24 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6464 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 741 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6720 - i32.store offset=8 - local.get $0 - i32.const 6720 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 6 - i32.ne - if + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|070 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $4 + i32.const 6464 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|070 + end + end + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 643 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop i32.const 0 - i32.const 1552 - i32.const 750 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6496 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 751 + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|072 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $4 + 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|072 + end + end + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 657 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 658 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6752 - i32.store offset=8 - local.get $0 - i32.const 6752 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 406 - i32.ne - if + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6528 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6784 - i32.store offset=8 - local.get $0 - i32.const 6784 - call $~lib/array/Array#filter - drop - global.get $std/array/i - i32.const 1 - i32.ne - if + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|074 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $4 + 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|074 + end + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 683 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 773 + local.set $0 + loop $for-loop|075 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|075 + end + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $7 + i32.store + local.get $1 + i32.const 6560 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 774 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6816 - i32.store offset=8 - local.get $0 - i32.const 6816 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if + local.set $6 + local.get $1 + 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 + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 784 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6848 - i32.store offset=8 - local.get $0 - i32.const 6848 - i32.const 4 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if + i32.store + local.get $0 + local.get $7 + i32.load offset=12 + local.tee $5 + i32.const 2 + i32.const 9 i32.const 0 - i32.const 1552 - i32.const 788 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6880 - i32.store offset=8 - local.get $0 - i32.const 6880 - i32.const 0 - call $~lib/array/Array#reduce - i32.eqz - if + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.set $4 + loop $for-loop|044 + local.get $6 + local.get $5 + local.get $7 + i32.load offset=12 + local.tee $0 + local.get $0 + local.get $5 + i32.gt_s + select + i32.lt_s + if + local.get $6 + i32.const 2 + i32.shl + local.tee $2 + local.get $7 + i32.load offset=4 + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $4 + i32.add + local.get $0 + local.get $6 + local.get $7 + i32.const 6560 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_f32) + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|044 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 697 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 0 - i32.const 1552 - i32.const 791 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store offset=8 - local.get $0 - i32.const 6912 - i32.const 0 - call $~lib/array/Array#reduce - if + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 794 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6944 - i32.store offset=8 - local.get $0 - i32.const 6944 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne + if + i32.const 0 + i32.const 1552 + i32.const 698 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6592 + i32.store offset=8 + local.get $1 + i32.const 6592 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 707 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 708 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6624 + i32.store offset=8 + local.get $1 + i32.const 6624 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 715 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop i32.const 0 - i32.const 1552 - i32.const 802 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6656 + i32.store offset=8 + local.get $1 + i32.const 6656 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 730 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 731 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6688 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 6688 + call $~lib/array/Array#filter + local.tee $1 + i32.store offset=24 + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 741 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 803 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6976 - i32.store offset=8 - local.get $0 - i32.const 6976 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6720 + i32.store offset=8 + local.get $1 + i32.const 6720 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 750 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 751 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 805 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7008 - i32.store offset=8 - local.get $0 - i32.const 7008 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6752 + i32.store offset=8 + local.get $1 + i32.const 6752 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop i32.const 0 - i32.const 1552 - i32.const 818 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6784 + i32.store offset=8 + local.get $1 + i32.const 6784 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 773 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 774 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6816 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 819 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7040 - i32.store offset=8 - local.get $0 - i32.const 7040 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if + local.set $6 i32.const 0 - i32.const 1552 - i32.const 829 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7072 - i32.store offset=8 - local.get $0 - i32.const 7072 - i32.const 4 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|077 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $1 + local.get $0 + local.get $4 + i32.const 6816 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|077 + end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 784 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6848 + i32.store offset=8 + i32.const 4 + local.set $6 i32.const 0 - i32.const 1552 - i32.const 833 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7104 - i32.store offset=8 - local.get $0 - i32.const 7104 - i32.const 0 - call $~lib/array/Array#reduceRight - i32.eqz - if + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|079 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $1 + local.get $0 + local.get $4 + i32.const 6848 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|079 + end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 788 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6880 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 836 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7136 - i32.store offset=8 - local.get $0 - i32.const 7136 - i32.const 0 - call $~lib/array/Array#reduceRight - if + local.set $6 + i32.const 0 + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|081 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $1 + local.get $0 + local.get $4 + i32.const 6880 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|081 + end + end + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 791 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6912 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 839 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7168 - i32.store offset=8 - local.get $0 - i32.const 7168 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if + local.set $6 i32.const 0 - i32.const 1552 - i32.const 847 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|083 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $1 + local.get $0 + local.get $4 + i32.const 6912 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|083 + end + end + local.get $6 + if + i32.const 0 + i32.const 1552 + i32.const 794 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6944 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 848 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7200 - i32.store offset=8 - local.get $0 - i32.const 7200 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if + local.set $6 i32.const 0 - i32.const 1552 - i32.const 850 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7232 - i32.store offset=8 - local.get $0 - i32.const 7232 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|085 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $1 + local.get $0 + local.get $4 + i32.const 6944 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|085 + end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 802 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 803 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 6976 + i32.store offset=8 + i32.const 0 + local.set $6 + i32.const 0 + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|087 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $1 + local.get $0 + local.get $4 + i32.const 6976 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|087 + end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 805 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $4 + i32.store + local.get $1 + i32.const 7008 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 863 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - if + local.set $6 i32.const 0 - i32.const 1552 - i32.const 864 + local.set $0 + local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|089 + local.get $0 + local.get $2 + local.get $4 + i32.load offset=12 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.lt_s + if + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $1 + local.get $0 + local.get $4 + i32.const 7008 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|089 + end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 818 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 819 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push - drop - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 2 - i32.const 9 - i32.const 7504 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=20 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $2 + i32.store + local.get $1 + i32.const 7040 + i32.store offset=8 + i32.const 0 + local.set $6 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|090 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + 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.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|090 + end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 829 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $2 + i32.store + local.get $1 + i32.const 7072 + i32.store offset=8 + i32.const 4 + local.set $6 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|092 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + 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.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|092 end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 833 + i32.const 3 + call $~lib/builtins/abort unreachable end - i32.const 7568 - local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 7568 + local.tee $1 + global.get $std/array/arr + local.tee $2 i32.store - end - local.get $0 - local.get $2 - call $~lib/array/Array#sort - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8 - i32.const 2 - i32.const 9 - i32.const 7600 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - block $__inlined_func$std/array/isArraysEqual (result i32) - i32.const 0 - local.set $2 + local.get $1 + i32.const 7104 + i32.store offset=8 i32.const 0 - local.get $0 + local.set $6 + local.get $2 i32.load offset=12 - local.tee $4 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|094 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + 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.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|094 + end + end + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 836 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $2 + i32.store local.get $1 + i32.const 7136 + i32.store offset=8 + i32.const 0 + local.set $6 + local.get $2 i32.load offset=12 - i32.ne - br_if $__inlined_func$std/array/isArraysEqual - drop i32.const 1 - local.get $0 - local.get $1 - i32.eq - br_if $__inlined_func$std/array/isArraysEqual - drop - loop $for-loop|02 - local.get $2 - local.get $4 - i32.lt_s + i32.sub + local.set $0 + loop $for-loop|096 + local.get $0 + i32.const 0 + i32.ge_s if - local.get $0 local.get $2 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f32.ne - if (result i32) - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f32.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - f32.ne - br_if $__inlined_func$std/array/isArraysEqual - drop - end + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + 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.get $0 i32.const 1 - i32.add - local.set $2 - br $for-loop|02 + i32.sub + local.set $0 + br $for-loop|096 end end - i32.const 1 - end - i32.eqz - if + local.get $6 + if + i32.const 0 + i32.const 1552 + i32.const 839 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $2 + i32.store + local.get $1 + i32.const 7168 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 953 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - i32.const 10 - i32.const 7664 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=24 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of12 - block $0of13 - block $outOfRange4 - global.get $~argumentsLength - br_table $0of13 $1of12 $outOfRange4 + local.set $6 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|098 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + 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.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|098 end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 847 + i32.const 3 + call $~lib/builtins/abort unreachable end - i32.const 7760 - local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 7760 + global.get $std/array/arr + local.tee $1 i32.store - end - local.get $0 - local.get $2 - call $~lib/array/Array#sort - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - i32.const 10 - i32.const 7792 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - block $__inlined_func$std/array/isArraysEqual (result i32) - i32.const 0 - local.set $2 - i32.const 0 - local.get $0 + local.get $1 i32.load offset=12 - local.tee $4 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 848 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $2 + i32.store local.get $1 + i32.const 7200 + i32.store offset=8 + i32.const 0 + local.set $6 + local.get $2 i32.load offset=12 - i32.ne - br_if $__inlined_func$std/array/isArraysEqual - drop i32.const 1 - local.get $0 - local.get $1 - i32.eq - br_if $__inlined_func$std/array/isArraysEqual - drop - loop $for-loop|03 - local.get $2 - local.get $4 - i32.lt_s + i32.sub + local.set $0 + loop $for-loop|0100 + local.get $0 + i32.const 0 + i32.ge_s if - local.get $0 local.get $2 - call $~lib/array/Array#__get - local.tee $6 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength local.get $6 - f64.ne - if (result i32) - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.tee $6 - local.get $6 - f64.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - f64.ne - br_if $__inlined_func$std/array/isArraysEqual - drop - end + 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.get $0 i32.const 1 - i32.add - local.set $2 - br $for-loop|03 - end - end - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 957 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 7888 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=12 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of15 - block $0of16 - block $outOfRange7 - global.get $~argumentsLength - br_table $0of16 $1of15 $outOfRange7 + i32.sub + local.set $0 + br $for-loop|0100 end - unreachable end - i32.const 7936 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 7936 - i32.store - end - local.get $0 - local.get $2 - call $~lib/array/Array#sort - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 7968 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 961 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 8016 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/array/Array#sort@varargs - drop - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 8096 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 965 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 8144 - call $~lib/rt/__newArray - local.tee $10 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 8176 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 8208 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 8240 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 8288 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - i32.const 64 - call $std/array/createReverseOrderedArray - local.tee $4 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 128 - call $std/array/createReverseOrderedArray - local.tee $7 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - i32.const 1024 - call $std/array/createReverseOrderedArray - local.tee $8 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer - i32.const 10000 - call $std/array/createReverseOrderedArray - local.tee $9 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - i32.const 512 - call $std/array/createRandomOrderedArray - local.tee $11 - i32.store offset=60 - local.get $10 - call $std/array/assertSortedDefault - local.get $1 - call $std/array/assertSortedDefault - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 8368 - call $~lib/rt/__newArray - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=8 - local.get $1 - local.get $10 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 985 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $std/array/assertSortedDefault - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 8400 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 988 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $std/array/assertSortedDefault - local.get $3 - local.get $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 991 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $std/array/assertSortedDefault - local.get $4 - local.get $0 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 850 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $2 + i32.store + local.get $1 + i32.const 7232 + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 994 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $std/array/assertSortedDefault - local.get $7 - local.get $0 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if + local.set $6 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0102 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $6 + 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.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0102 + end + end + local.get $6 + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 863 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 864 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 997 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $std/array/assertSortedDefault - local.get $8 - local.get $0 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if + call $~lib/array/Array#push + drop + call $~lib/bindings/Math/random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 7504 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=20 i32.const 0 - i32.const 1552 - i32.const 1000 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $std/array/assertSortedDefault - local.get $9 - local.get $0 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if + global.set $~argumentsLength i32.const 0 - i32.const 1552 - i32.const 1003 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - call $std/array/assertSortedDefault - global.get $~lib/memory/__stack_pointer - i32.const 64 - call $std/array/createRandomOrderedArray - local.tee $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 257 - call $std/array/createRandomOrderedArray - local.tee $1 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - i32.const 8432 - i32.store offset=8 - local.get $0 - i32.const 8432 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 8464 - i32.store offset=8 - local.get $0 - i32.const 8464 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 8496 - i32.store offset=8 - local.get $1 - i32.const 8496 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 8528 - i32.store offset=8 - local.get $1 - i32.const 8528 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 8 - call $~lib/memory/memory.fill - local.get $0 - local.get $2 - call $~lib/array/Array#set:buffer - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - i32.const 8 - i32.store offset=8 - local.get $0 - 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 $0 - i32.store - loop $for-loop|062 - local.get $1 - i32.const 2 + local.set $1 + 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 + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of146 + block $0of147 + block $outOfRange48 + global.get $~argumentsLength + br_table $0of147 $1of146 $outOfRange48 + end + unreachable + end + i32.const 7568 + local.set $1 global.get $~lib/memory/__stack_pointer + i32.const 7568 + i32.store + end + i32.const 0 + local.set $7 + block $__inlined_func$~lib/array/Array#sort + local.get $0 + local.tee $4 + i32.load offset=12 + local.tee $5 i32.const 1 - call $~lib/array/Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 + i32.le_s + br_if $__inlined_func$~lib/array/Array#sort + local.get $4 + i32.load offset=4 + local.set $3 + local.get $5 + i32.const 2 + i32.eq + if + local.get $3 + f32.load offset=4 + local.set $13 + local.get $3 + f32.load + local.set $11 + i32.const 2 + global.set $~argumentsLength + local.get $13 + local.get $11 + 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 + f32.store offset=4 + local.get $3 + local.get $13 + f32.store + end + br $__inlined_func$~lib/array/Array#sort + end + local.get $5 + 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 + if + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $13 + local.get $7 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $1 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + i32.const 2 + global.set $~argumentsLength + local.get $13 + local.get $11 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $3 + local.get $0 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $11 + f32.store + br $while-continue|1 + end + end + end + local.get $3 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $13 + f32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0104 + end + end + else + local.get $3 + local.get $5 + local.get $1 + call $~lib/util/sort/weakHeapSort + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 7600 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + block $__inlined_func$std/array/isArraysEqual (result i32) + i32.const 0 + local.set $1 i32.const 0 + local.get $4 + i32.load offset=12 + local.tee $0 + local.get $5 + i32.load offset=12 + i32.ne + br_if $__inlined_func$std/array/isArraysEqual + drop i32.const 1 - local.get $1 - i32.sub - call $~lib/array/Array#__set - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $1 + local.get $4 + local.get $5 + i32.eq + br_if $__inlined_func$std/array/isArraysEqual + drop + loop $for-loop|025 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.tee $11 + local.get $11 + f32.ne + if (result i32) + local.get $5 + local.get $1 + call $~lib/array/Array#__get + local.tee $11 + local.get $11 + f32.ne + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.get $5 + local.get $1 + call $~lib/array/Array#__get + f32.ne + br_if $__inlined_func$std/array/isArraysEqual + drop + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|025 + end + end i32.const 1 - i32.add - local.set $1 - br $for-loop|062 end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - i32.const 8560 - i32.store offset=8 - local.get $0 - i32.const 8560 - call $std/array/assertSorted<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - call $std/array/createReverseOrderedElementsArray - local.tee $0 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - i32.const 8592 - i32.store offset=8 - local.get $0 - i32.const 8592 - call $std/array/assertSorted<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 8784 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 8832 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=52 - i32.const 1 - global.set $~argumentsLength - local.get $0 - call $std/array/assertSorted<~lib/string/String|null>@varargs - block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (result i32) - i32.const 0 - local.set $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 953 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 8 + i32.const 3 + i32.const 10 + i32.const 7664 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=24 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner1 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $7 + i32.const 15044 + i32.lt_s + br_if $folding-inner2 + 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 7760 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 7760 + i32.store + end + i32.const 0 + local.set $7 + block $__inlined_func$~lib/array/Array#sort + local.get $0 + local.tee $4 + i32.load offset=12 + local.tee $5 + i32.const 1 + i32.le_s + br_if $__inlined_func$~lib/array/Array#sort + local.get $4 + i32.load offset=4 + local.set $3 + local.get $5 + i32.const 2 + i32.eq + if + local.get $3 + f64.load offset=8 + local.set $14 + local.get $3 + f64.load + local.set $12 + i32.const 2 + global.set $~argumentsLength + local.get $14 + local.get $12 local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $0 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $12 + f64.store offset=8 + local.get $3 + local.get $14 + f64.store + end + br $__inlined_func$~lib/array/Array#sort + end + local.get $5 + i32.const 256 + i32.lt_s + if local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|04 - local.get $2 + local.set $2 + loop $for-loop|0106 + local.get $5 local.get $7 - i32.lt_s + i32.gt_s if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer local.get $3 - i32.store + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $14 + local.get $7 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1107 + local.get $1 + i32.const 0 + i32.ge_s + if + block $while-break|1108 + local.get $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + i32.const 2 + global.set $~argumentsLength + local.get $14 + local.get $12 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1108 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $3 + local.get $0 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $12 + f64.store + br $while-continue|1107 + end + end + end + local.get $3 local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $3 - local.get $4 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $2 i32.const 1 i32.add - local.set $2 - br $for-loop|04 + i32.const 3 + i32.shl + i32.add + local.get $14 + f64.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0106 end end - br $folding-inner1 + else + local.get $3 + local.get $5 + local.get $1 + call $~lib/util/sort/weakHeapSort end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1040 + i32.const 8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 400 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $0 - i32.store - loop $for-loop|063 - local.get $2 - i32.const 400 - i32.lt_s - if - call $~lib/math/NativeMath.random - f64.const 32 - f64.mul - i32.trunc_f64_s - call $std/array/createRandomString + i32.const 10 + i32.const 7792 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + block $__inlined_func$std/array/isArraysEqual (result i32) + i32.const 0 local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $2 + i32.const 0 + local.get $4 + i32.load offset=12 + local.tee $0 + local.get $5 + i32.load offset=12 + i32.ne + br_if $__inlined_func$std/array/isArraysEqual + drop i32.const 1 - i32.add - local.set $2 - br $for-loop|063 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=56 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of18 - block $0of19 - block $outOfRange10 - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of19 $1of18 $outOfRange10 + local.get $4 + local.get $5 + i32.eq + br_if $__inlined_func$std/array/isArraysEqual + drop + loop $for-loop|028 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.tee $12 + local.get $12 + f64.ne + if (result i32) + local.get $5 + local.get $1 + call $~lib/array/Array#__get + local.tee $12 + local.get $12 + f64.ne + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.get $5 + local.get $1 + call $~lib/array/Array#__get + f64.ne + br_if $__inlined_func$std/array/isArraysEqual + drop + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|028 + end end + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 957 + i32.const 3 + call $~lib/builtins/abort unreachable end - i32.const 8912 - local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8912 - i32.store - end - local.get $0 - local.get $2 - call $std/array/assertSorted<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - i32.const 0 - i32.const 31 - i32.const 8944 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store offset=68 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinBooleanArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9072 - i32.store offset=8 - local.get $0 - i32.const 9072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1049 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 9120 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - 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/util/string/joinIntegerArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9472 - i32.store offset=8 - local.get $0 - i32.const 9472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1050 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 7 - i32.const 9504 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 9536 - i32.store offset=68 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 9536 - call $~lib/util/string/joinIntegerArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9472 - i32.store offset=8 - local.get $0 - i32.const 9472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1051 + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 9568 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 9600 - i32.store offset=68 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 9600 - call $~lib/util/string/joinIntegerArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9632 - i32.store offset=8 - local.get $0 - i32.const 9632 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 7888 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 i32.const 0 - i32.const 1552 - i32.const 1052 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 6 - i32.const 3 - i32.const 10 - i32.const 9712 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 9792 - i32.store offset=68 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinFloatArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 10960 - i32.store offset=8 - local.get $0 - i32.const 10960 - call $~lib/string/String.__eq - i32.eqz - if + global.set $~argumentsLength i32.const 0 - i32.const 1552 - i32.const 1053 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 11104 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - 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/util/string/joinReferenceArray<~lib/string/String|null> - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11072 - i32.store offset=8 - local.get $0 - i32.const 11072 - call $~lib/string/String.__eq - i32.eqz - if + local.set $1 + 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.const 1552 - i32.const 1054 + i32.store + block $1of158 + block $0of159 + block $outOfRange60 + global.get $~argumentsLength + br_table $0of159 $1of158 $outOfRange60 + end + unreachable + end + i32.const 7936 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 7936 + i32.store + end + local.get $0 + local.get $1 + call $~lib/array/Array#sort + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=52 - local.get $0 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#__uset - local.get $0 - i32.const 2 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store offset=68 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11200 - i32.store offset=8 - local.get $0 - i32.const 11200 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 7968 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 1056 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=60 - local.get $0 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 0 - call $std/array/Ref#constructor - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store offset=68 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11296 - i32.store offset=8 - local.get $0 - i32.const 11296 - call $~lib/string/String.__eq - i32.eqz - if + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 961 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 8016 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 i32.const 0 - i32.const 1552 - i32.const 1059 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 11392 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 11424 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11456 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 11488 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=28 - local.get $0 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8752 - i32.store offset=8 - local.get $0 - i32.const 8752 - call $~lib/string/String.__eq - i32.eqz - if + global.set $~argumentsLength + local.get $0 i32.const 0 - i32.const 1552 - i32.const 1069 + call $~lib/array/Array#sort@varargs + drop + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 8096 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 965 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 8144 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 8176 + call $~lib/rt/__newArray + local.tee $10 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 8208 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11072 - i32.store offset=8 - local.get $0 - i32.const 11072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1070 + i32.const 8240 + call $~lib/rt/__newArray + local.tee $7 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11536 - i32.store offset=8 - local.get $0 - i32.const 11536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1071 + i32.const 8288 + call $~lib/rt/__newArray + local.tee $6 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createReverseOrderedArray + local.tee $3 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 128 + call $std/array/createReverseOrderedArray + local.tee $5 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + call $std/array/createReverseOrderedArray + local.tee $4 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 10000 + call $std/array/createReverseOrderedArray + local.tee $2 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createRandomOrderedArray + local.tee $1 + i32.store offset=60 + local.get $0 + call $std/array/assertSortedDefault + local.get $10 + call $std/array/assertSortedDefault + i32.const 1 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11568 - i32.store offset=8 - local.get $0 - i32.const 11568 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 8368 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 1072 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 985 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $std/array/assertSortedDefault + i32.const 2 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 32 - i32.const 11616 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11648 - i32.store offset=8 - local.get $0 - i32.const 11648 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 8400 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $9 + local.get $0 i32.const 0 - i32.const 1552 - i32.const 1074 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 1 - i32.const 33 - i32.const 11680 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11712 - i32.store offset=8 - local.get $0 - i32.const 11712 - call $~lib/string/String.__eq - i32.eqz - if + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 988 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $std/array/assertSortedDefault + local.get $7 + local.get $6 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 991 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $std/array/assertSortedDefault + local.get $3 + local.get $6 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 994 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + call $std/array/assertSortedDefault + local.get $5 + local.get $6 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 997 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $std/array/assertSortedDefault + local.get $4 + local.get $6 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1000 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $std/array/assertSortedDefault + local.get $2 + local.get $6 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1003 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createRandomOrderedArray + local.tee $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 257 + call $std/array/createRandomOrderedArray + local.tee $1 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 8432 + i32.store offset=8 + local.get $0 + i32.const 8432 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8464 + i32.store offset=8 + local.get $0 + i32.const 8464 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8496 + i32.store offset=8 + local.get $1 + i32.const 8496 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8528 + i32.store offset=8 + local.get $1 + i32.const 8528 + call $std/array/assertSorted + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + 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 + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + 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 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 i32.const 0 - i32.const 1552 - i32.const 1075 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 34 - i32.const 11760 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11808 - i32.store offset=8 - local.get $0 - i32.const 11808 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $5 i32.const 0 - i32.const 1552 - i32.const 1076 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 3 - i32.const 35 - i32.const 11888 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11952 - i32.store offset=8 - local.get $0 - i32.const 11952 - call $~lib/string/String.__eq - i32.eqz - if i32.const 0 - i32.const 1552 - i32.const 1077 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 12064 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=44 - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12112 - i32.store offset=8 - local.get $0 - i32.const 12112 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__link + local.get $5 i32.const 0 - i32.const 1552 - i32.const 1081 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 27 - i32.const 12224 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=64 - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12272 - i32.store offset=8 - local.get $0 - i32.const 12272 - call $~lib/string/String.__eq - i32.eqz - if + i32.store offset=4 + local.get $5 i32.const 0 - i32.const 1552 - i32.const 1082 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=60 - local.get $0 - i32.const 0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 12304 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 12336 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12368 - i32.store offset=8 - local.get $0 - i32.const 12368 - call $~lib/string/String.__eq - i32.eqz - if + i32.store offset=8 + local.get $5 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 8 + call $~lib/memory/memory.fill + local.get $5 + local.get $1 + i32.store + local.get $5 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $1 + i32.store offset=4 + local.get $5 + i32.const 8 + i32.store offset=8 + local.get $5 + 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 + i32.store + loop $for-loop|061111 + local.get $0 + i32.const 2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/array/Array#constructor + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + local.get $0 + i32.sub + call $~lib/array/Array#__set + local.get $5 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|061111 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 8560 + i32.store offset=8 + local.get $5 + i32.const 8560 + call $std/array/assertSorted<~lib/array/Array> i32.const 0 - i32.const 1552 - i32.const 1085 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 36 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=36 - local.get $0 - i32.const 0 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 12416 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 12448 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12368 - i32.store offset=8 - local.get $0 - i32.const 12368 - call $~lib/string/String.__eq - i32.eqz - if + local.set $5 + global.get $~lib/memory/__stack_pointer + local.tee $2 + 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 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 1088 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 38 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 2 - i32.const 37 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 12480 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 0 - local.get $1 - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11072 - i32.store offset=8 - local.get $0 - i32.const 11072 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 1091 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=36 - local.get $0 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 12512 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12544 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 2 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12576 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 3 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12608 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $0 - i32.store offset=32 - local.get $0 - i32.load offset=12 - i32.const 10 - i32.ne - if i32.const 0 - i32.const 1552 - i32.const 1098 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 2048 + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.store + local.get $1 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + i32.const 2048 + i32.store offset=8 + local.get $1 + i32.const 512 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 - i32.const 10 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/array/Array#__get - local.get $1 - i32.ne + i32.store + loop $for-loop|053 + local.get $5 + i32.const 512 + i32.lt_s if + 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 + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 1100 - i32.const 5 - call $~lib/builtins/abort + i32.store + local.get $0 + i32.const 4 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 511 + local.get $5 + i32.sub + 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 + i32.store offset=4 + local.get $1 + local.get $5 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|053 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 8592 + i32.store offset=8 + local.get $1 + i32.const 8592 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 8784 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 8832 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=52 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + local.set $3 + 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 $1of156 + block $0of157 + block $outOfRange58 + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of157 $1of156 $outOfRange58 + end unreachable end - local.get $1 + i32.const 8880 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store + end + 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 + local.get $1 + local.get $3 + call $~lib/array/Array<~lib/array/Array>#sort + local.set $7 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $7 + i32.store + block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 1 + local.set $9 + local.get $7 + i32.load offset=12 + local.set $2 + loop $for-loop|060 + local.get $2 + local.get $9 + i32.gt_s + if + local.get $7 + local.get $9 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $7 + local.get $9 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $4 + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/string/String|null> + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|060 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 942 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (result i32) + i32.const 0 + local.set $3 + 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 15044 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner161 + block $folding-inner062 + local.get $1 + i32.load offset=12 + local.tee $2 + local.get $0 + i32.load offset=12 + i32.ne + br_if $folding-inner062 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner161 + loop $for-loop|064 + local.get $2 + local.get $3 + i32.gt_s + if + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $5 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner062 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|064 + end + end + br $folding-inner161 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1040 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 2 - i32.const 39 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=44 - local.get $0 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 12672 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 12768 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 2 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 12896 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 3 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 12960 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.tee $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 2 - i32.const 27 - i32.const 12992 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=48 - local.get $0 - i32.load offset=12 - i32.const 8 - i32.ne - if i32.const 0 - i32.const 1552 - i32.const 1106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|2 - local.get $1 - local.get $2 - i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - if + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.const 400 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $10 + i32.store + loop $for-loop|062 local.get $0 - local.get $1 - call $~lib/array/Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $2 - local.get $1 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $3 - local.get $4 - call $~lib/string/String.__eq - i32.eqz + i32.const 400 + i32.lt_s if + call $~lib/math/NativeMath.random + f64.const 32 + f64.mul + i32.trunc_f64_s + local.set $5 i32.const 0 - i32.const 1552 - i32.const 1108 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 15044 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + i32.const 8752 + local.set $1 + local.get $2 + i32.const 8752 + i32.store + loop $for-loop|067 + local.get $5 + local.get $9 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 7312 + i32.store offset=4 + call $~lib/math/NativeMath.random + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 7312 + i32.store offset=8 + i32.const 7308 + i32.load + i32.const 1 + i32.shr_u + f64.convert_i32_s + f64.mul + f64.floor + i32.trunc_f64_s + local.set $7 + local.get $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 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#charAt + local.get $7 + i32.const 7308 + i32.load + i32.const 1 + i32.shr_u + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8752 + local.set $2 + br $__inlined_func$~lib/string/String#charAt + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $7 + i32.const 1 + i32.shl + i32.const 7312 + i32.add + i32.load16_u + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $4 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.tee $1 + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|067 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $10 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|062 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 end - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.store offset=56 - local.get $0 - i32.const 0 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 13056 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.const 1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 13088 - call $~lib/rt/__newArray - call $~lib/array/Array#__uset - local.get $0 - i32.store offset=56 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#flat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $10 + i32.store offset=56 + i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.const 1552 - i32.const 1112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/arr - i32.const 29972 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|070 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|070 + local.set $6 + 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 $1of163 + block $0of164 + block $outOfRange65 + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of164 $1of163 $outOfRange65 + end + unreachable 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 72 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if + i32.const 8912 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8912 + i32.store + end + local.get $10 + local.get $6 + call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + i32.const 2 i32.const 0 + i32.const 31 + i32.const 8944 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store offset=64 local.get $2 + i32.const 9040 + i32.store offset=68 + local.get $1 + i32.load offset=4 + local.set $7 + local.get $1 + i32.load offset=12 + local.set $1 i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + local.set $0 + i32.const 0 + local.set $6 local.get $2 - local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - local.get $4 + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinBooleanArray local.get $1 - call $~lib/string/String.__eq + i32.const 1 + i32.sub + local.tee $9 + i32.const 0 + i32.lt_s if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - return + i32.const 8752 + local.set $1 + br $__inlined_func$~lib/util/string/joinBooleanArray 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 - ) - (func $~lib/array/Array#constructor (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.tee $3 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - local.get $2 - call $~lib/array/Array#set:buffer - local.get $1 - local.get $2 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $std/array/Ref#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.shl - local.tee $4 - local.set $5 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.set $1 - local.get $3 - if + block $folding-inner069 + local.get $9 + i32.eqz + if + i32.const 8976 + i32.const 9008 + local.get $7 + i32.load8_u + select + local.set $1 + br $folding-inner069 + end + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.const 9036 + i32.load + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 5 + i32.add + i32.mul + i32.const 5 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $for-loop|1 + local.get $6 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $7 + i32.add + i32.load8_u + local.tee $2 + i32.eqz + i32.const 4 + i32.add + local.set $5 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 8976 + i32.const 9008 + local.get $2 + select + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + local.get $5 + i32.add + local.set $0 + local.get $3 + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 9040 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + local.get $3 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + local.get $7 + local.get $9 + i32.add + i32.load8_u + local.tee $2 + i32.eqz + i32.const 4 + i32.add + local.set $5 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 8976 + i32.const 9008 + local.get $2 + select + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $4 + local.get $0 + local.get $5 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner069 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinBooleanArray + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.tee $0 local.get $1 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $1 - local.tee $3 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $1 - 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 - ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $4 - i32.add - local.tee $2 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 222 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - local.tee $5 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/memory/memory.copy - local.get $0 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) + i32.store + local.get $0 + i32.const 9072 + i32.store offset=8 + local.get $1 + i32.const 9072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1049 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 9120 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=64 + local.get $1 + i32.const 8752 + i32.store offset=68 + local.get $0 + i32.const 8752 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10928 + i32.store offset=8 + local.get $0 + i32.const 10928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1050 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 10960 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=64 + local.get $1 + i32.const 10992 + i32.store offset=68 + local.get $0 + i32.const 10992 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 10928 + i32.store offset=8 + local.get $0 + i32.const 10928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1051 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 11024 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=64 local.get $1 - local.get $3 - i32.add + i32.const 11056 + i32.store offset=68 + local.get $0 + i32.const 11056 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 11088 + i32.store offset=8 + local.get $0 + i32.const 11088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1052 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 3 + i32.const 10 + i32.const 11168 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=64 + local.get $1 + i32.const 11248 + i32.store offset=68 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + call $~lib/util/string/joinFloatArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 12416 + i32.store offset=8 + local.get $0 + i32.const 12416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1053 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 27 + i32.const 12560 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=64 + local.get $1 + i32.const 8752 + i32.store offset=68 + local.get $0 + i32.const 8752 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $0 + global.get $~lib/memory/__stack_pointer local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 12528 + i32.store offset=8 + local.get $0 + i32.const 12528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1054 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 3 + i32.const 2 + i32.const 11 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=52 + local.get $0 i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__uset + local.get $0 + i32.const 2 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $1 + local.get $0 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 9040 + i32.store offset=68 + local.get $0 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store local.get $1 + i32.const 12656 + i32.store offset=8 + local.get $0 + i32.const 12656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1056 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 2 + i32.const 2 + i32.const 8 i32.const 0 - i32.gt_s - select - else + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=60 + local.get $0 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset local.get $1 - local.get $3 + local.get $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 9040 + i32.store offset=68 + local.get $0 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 12752 + i32.store offset=8 + local.get $0 + i32.const 12752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1059 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 12848 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 12880 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 12912 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 12944 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=28 + local.get $1 + call $~lib/array/Array#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $5 + i32.store + local.get $1 + i32.const 8752 + i32.store offset=8 + local.get $5 + i32.const 8752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1069 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/array/Array#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $4 + i32.store + local.get $1 + i32.const 12528 + i32.store offset=8 + local.get $4 + i32.const 12528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1070 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/array/Array#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $2 + i32.store + local.get $1 + i32.const 12992 + i32.store offset=8 + local.get $2 + i32.const 12992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1071 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 13024 + i32.store offset=8 + local.get $0 + i32.const 13024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1072 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 32 + i32.const 13072 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=64 local.get $1 - local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - select - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 + i32.store local.get $2 + i32.const 9040 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=12 + local.set $1 i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 + local.set $0 + i32.const 0 + local.set $6 local.get $2 - local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $3 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $1 + 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 8752 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + block $folding-inner0115 + local.get $3 + i32.eqz + if + local.get $5 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $1 + br $folding-inner0115 + 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 11 + i32.add + i32.mul + i32.const 11 + 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|0116 + 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.add + i32.load8_s + 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 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0116 + end + end + local.get $2 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner0115 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - 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 - ) - (func $~lib/array/Array#splice (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) + i32.store + local.get $0 + i32.const 13104 + i32.store offset=8 local.get $1 - local.get $3 - i32.add + i32.const 13104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1074 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 1 + i32.const 33 + i32.const 13136 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer local.tee $1 - i32.const 0 + local.get $0 + i32.store offset=64 local.get $1 + 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 + local.tee $2 i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 + i32.store + local.get $2 + i32.const 9040 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=12 + local.set $1 + i32.const 0 + local.set $0 + i32.const 0 + local.set $6 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $2 - local.get $2 - i32.const 2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $1 + 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 8752 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + block $folding-inner0118 + local.get $3 + i32.eqz + if + local.get $5 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $1 + br $folding-inner0118 + 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 10 + i32.add + i32.mul + i32.const 10 + 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|0119 + 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 1 + i32.shl + i32.add + i32.load16_u + 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 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0119 + end + end + local.get $2 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner0118 + 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 + 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 + local.get $0 + i32.const 13168 + i32.store offset=8 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 + i32.const 13168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1075 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 3 + i32.const 34 + i32.const 13216 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=64 local.get $1 + i32.const 4 i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - 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 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 5696 - i32.const 1104 - i32.const 96 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#splice (param $0 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - i32.const 0 - i32.gt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 1 - local.get $3 - local.get $2 - i32.sub - local.tee $1 - local.get $1 - i32.const 1 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $1 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $2 - i32.ne - if - local.get $6 - local.get $5 + 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 + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 9040 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=12 + local.set $1 + i32.const 0 + local.set $0 + i32.const 0 + local.set $6 + local.get $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 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $1 + 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 8752 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + block $folding-inner0121 + local.get $3 + i32.eqz + if + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $5 + i64.load + 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 + 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 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $8 + i64.const 4294967295 + i64.le_u + 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.tee $1 + 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 $1 + 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.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $8 + local.get $1 + call $~lib/util/number/utoa64_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + end + local.set $1 + br $folding-inner0121 + 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 20 + i32.add + i32.mul + i32.const 20 + 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|0122 + 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 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0122 + end + end + local.get $2 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner0121 + 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 + 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 + local.get $0 + i32.const 13264 + i32.store offset=8 + local.get $1 + i32.const 13264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1076 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 3 + i32.const 35 + i32.const 13344 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=64 + local.get $1 + 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 + local.tee $2 + i32.const 0 + i32.store local.get $2 - i32.const 2 - i32.shl + i32.const 9040 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=12 + local.set $1 + i32.const 0 + local.set $0 + i32.const 0 + local.set $6 + local.get $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 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $1 + 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 8752 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + block $folding-inner0124 + local.get $3 + i32.eqz + if + local.get $5 + 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 + 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 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $2 + 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 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0125 + end + end + local.get $2 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner0124 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $3 - local.get $2 - i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 13408 + i32.store offset=8 + local.get $1 + i32.const 13408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1077 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7 i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $1 - 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 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#map (param $0 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=12 - local.tee $5 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $5 + i32.const 27 + i32.const 13520 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=44 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 13568 + i32.store offset=8 + local.get $0 + i32.const 13568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1081 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 + i32.const 27 + i32.const 13680 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=64 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 13728 + i32.store offset=8 + local.get $0 + i32.const 13728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1082 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 2 + i32.const 2 + i32.const 22 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=60 + local.get $0 + i32.const 0 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 13760 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 13792 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + local.get $0 + i32.store offset=60 + 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 + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 9040 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 local.get $0 i32.load offset=12 - local.tee $4 - local.get $4 - local.get $5 - i32.gt_s - select + local.set $0 + i32.const 0 + local.set $7 + local.get $1 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - if - local.get $2 - i32.const 2 - i32.shl - local.tee $4 + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> local.get $0 - i32.load offset=4 - i32.add + i32.const 1 + i32.sub + local.tee $5 + 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 $1 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + call $~lib/array/Array#toString + else + i32.const 8752 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + i32.const 8752 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8752 + i32.store offset=4 + i32.const 9036 i32.load - local.set $6 - i32.const 3 - global.set $~argumentsLength + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|076 + local.get $5 + local.get $7 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/array/Array#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $1 + local.get $4 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 9040 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|076 + end + end + global.get $~lib/memory/__stack_pointer local.get $3 - local.get $4 + local.get $5 + i32.const 2 + i32.shl i32.add - local.get $6 - local.get $2 - local.get $0 - local.get $1 i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.tee $2 i32.store local.get $2 - i32.const 1 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/array/Array#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 + 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 + local.get $0 + i32.const 13824 + i32.store offset=8 + local.get $1 + i32.const 13824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1085 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 2 + i32.const 2 + i32.const 36 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=36 + local.get $0 + i32.const 0 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 13872 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 13904 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + local.get $0 + i32.store offset=36 + 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 + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 9040 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 local.get $0 i32.load offset=12 - local.tee $3 - local.get $3 - local.get $5 - i32.gt_s - select + local.set $0 + i32.const 0 + local.set $7 + local.get $1 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - if + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> local.get $0 - i32.load offset=4 - local.get $2 + i32.const 1 + i32.sub + local.tee $5 + 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 $1 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + call $~lib/array/Array#toString + else + i32.const 8752 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + end + i32.const 8752 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8752 + i32.store offset=4 + i32.const 9036 + i32.load + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|078 + local.get $5 + local.get $7 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/array/Array#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $1 + local.get $4 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 9040 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|078 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $5 i32.const 2 i32.shl i32.add i32.load - local.set $3 - i32.const 3 - global.set $~argumentsLength - local.get $3 + local.tee $2 + i32.store local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $4 - local.get $3 - call $~lib/array/Array#push - drop + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/array/Array#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 end - local.get $2 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 12 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 - local.get $4 - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 + global.set $~lib/memory/__stack_pointer end - i32.const 8064 - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8064 + 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 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#constructor - local.tee $2 - i32.store - loop $for-loop|0 local.get $0 + i32.const 13824 + i32.store offset=8 local.get $1 - i32.gt_s + i32.const 13824 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - local.get $1 - local.get $0 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.const 1552 + i32.const 1088 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#constructor - local.tee $2 - i32.store - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1 + i32.const 2 + i32.const 38 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $2 + i32.load offset=4 + i32.store offset=32 + local.get $1 + i32.const 1 + i32.const 2 + i32.const 37 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 7 + i32.const 13936 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $2 + i32.const 0 + local.get $1 + call $~lib/array/Array#__uset local.get $0 + local.get $2 + i32.store offset=32 + 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 + local.tee $1 + i32.const 0 + i32.store local.get $1 - i32.gt_s - if - local.get $2 - local.get $1 - call $~lib/math/NativeMath.random + i32.const 9040 + i32.store + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 + i32.load offset=12 + local.set $0 + i32.const 0 + local.set $7 + local.get $1 + i32.const 12 + 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 + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_f64_s - call $~lib/array/Array#__set - local.get $1 i32.const 1 - i32.add + i32.sub + local.tee $5 + 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 $1 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + call $~lib/array/Array<~lib/array/Array>#toString + else + i32.const 8752 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + end + i32.const 8752 local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=4 - local.tee $2 - i32.store + i32.const 8752 + i32.store offset=4 + i32.const 9036 + i32.load + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|080 + local.get $5 + local.get $7 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $1 + local.get $4 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 9040 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|080 + end + end global.get $~lib/memory/__stack_pointer local.get $3 - i32.load - local.tee $4 - i32.store offset=4 + local.get $5 i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.tee $2 + i32.store + local.get $2 if - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.store - end - br $folding-inner0 - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/insertionSort<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 29 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $~lib/array/Array#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $0 - local.get $2 - call $~lib/array/Array#set:buffer - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $1 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $3 - i32.eqz - if + call $~lib/array/Array<~lib/array/Array>#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 - return - end - i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - local.get $1 - 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 - local.get $2 - ) - (func $~lib/util/string/joinBooleanArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s - if + i32.const 12528 + i32.store offset=8 + local.get $1 + i32.const 12528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1091 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - return - end - block $folding-inner0 - local.get $3 - i32.eqz + i32.const 2 + i32.const 22 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=36 + local.get $0 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 13968 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 14000 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 14032 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 3 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 14064 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + local.get $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $1 + i32.store offset=32 + local.get $1 + i32.load offset=12 + i32.const 10 + i32.ne if - i32.const 8976 - i32.const 9008 + i32.const 0 + i32.const 1552 + i32.const 1098 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1129 local.get $0 - i32.load8_u - select - local.set $0 - br $folding-inner0 + i32.const 10 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1100 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1129 + end end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9036 - i32.load - i32.const 1 - i32.shr_u + local.tee $1 + i32.const 4 + i32.const 2 + i32.const 39 + i32.const 0 + call $~lib/rt/__newArray local.tee $4 - i32.const 5 - i32.add - i32.mul - i32.const 5 - i32.add - local.tee $7 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + i32.store offset=44 + local.get $4 + i32.const 0 i32.const 1 - i32.shl + i32.const 2 + i32.const 27 + i32.const 14128 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $4 i32.const 1 - call $~lib/rt/itcms/__new + i32.const 3 + i32.const 2 + i32.const 27 + i32.const 14224 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $4 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 27 + i32.const 14352 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $4 + i32.const 3 + i32.const 1 + i32.const 2 + i32.const 27 + i32.const 14416 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $1 + local.get $4 + i32.store offset=44 + i32.const 0 + local.set $0 + i32.const 0 + local.set $7 + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.tee $2 + 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 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $4 + i32.load offset=12 + local.set $5 + local.get $4 + i32.load offset=4 + local.set $4 + loop $for-loop|0130 + local.get $0 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + if (result i32) + local.get $1 + i32.load offset=12 + else + i32.const 0 + end + local.get $7 + i32.add + local.set $7 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0130 + end + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 2 + i32.shl local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $9 i32.store - loop $for-loop|1 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store offset=4 + local.get $10 + local.get $7 + i32.store offset=12 + local.get $10 + local.get $1 + i32.store offset=8 + local.get $10 + local.get $9 + i32.store offset=4 + local.get $10 + local.get $9 + i32.store + local.get $10 + local.get $9 + i32.const 0 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $0 + loop $for-loop|1131 + local.get $0 local.get $5 - i32.gt_s + i32.lt_s if + local.get $4 local.get $0 - local.get $5 - i32.add - i32.load8_u - local.tee $8 - i32.eqz - i32.const 4 - i32.add - local.set $6 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 8976 - i32.const 9008 - local.get $8 - select - local.get $6 - i32.const 1 + i32.const 2 i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 i32.add - local.set $2 - local.get $4 + i32.load + local.tee $1 if - local.get $1 - local.get $2 - i32.const 1 - i32.shl + local.get $3 + local.get $9 i32.add - i32.const 9040 - local.get $4 - i32.const 1 - i32.shl + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + local.tee $1 call $~lib/memory/memory.copy - local.get $2 - local.get $4 + local.get $1 + local.get $3 i32.add - local.set $2 + local.set $3 end - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|1 + local.set $0 + br $for-loop|1131 end end - local.get $0 - local.get $3 - i32.add - i32.load8_u - local.tee $3 - i32.eqz - i32.const 4 - i32.add + i32.const 0 local.set $0 - local.get $1 - local.get $2 - i32.const 1 - i32.shl + loop $for-loop|2 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $9 + local.get $9 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 8976 - i32.const 9008 - local.get $3 - select - local.get $0 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $7 - local.get $0 + global.set $~lib/memory/__stack_pointer local.get $2 - i32.add - local.tee $0 - i32.gt_s + local.get $10 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 27 + i32.const 14448 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=48 + local.get $10 + i32.load offset=12 + i32.const 8 + i32.ne if - local.get $1 + i32.const 0 + i32.const 1552 + i32.const 1106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|2132 local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + local.get $4 + i32.load offset=12 + i32.lt_s + if + local.get $10 + local.get $0 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $4 + local.get $0 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1108 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2132 + end end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.tee $1 + i32.const 2 + i32.const 2 + i32.const 22 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=56 + local.get $0 + i32.const 0 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 14512 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 14544 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset 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 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + local.get $0 + i32.store offset=56 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#flat + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + if + i32.const 0 + i32.const 1552 + i32.const 1112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/arr + i32.const 31428 global.set $~lib/memory/__stack_pointer - i32.const 9344 - return - end - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $2 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|070 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|070 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1133 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1133 + 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 72 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 31456 + i32.const 31504 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/utoa_dec_simple - 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 - local.get $0 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#indexOf (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 global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 $1 + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s + local.get $3 + select if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const -1 return end - block $folding-inner0 - local.get $4 - i32.eqz + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 + local.tee $4 + i32.store local.get $4 - local.get $6 - i32.gt_s + local.get $1 + call $~lib/string/String.__eq if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.set $3 - local.get $5 - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $5 - i32.add - local.set $3 - end - local.get $6 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $6 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + local.get $2 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end - local.get $7 - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - 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 + i32.const -1 ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 i32.const 0 i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 local.get $0 - i32.eqz + i32.const 268435455 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9344 - return + i32.const 1056 + i32.const 1104 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 + local.get $0 + i32.const 2 i32.shl - i32.const 1 + local.tee $3 + i32.const 0 call $~lib/rt/itcms/__new local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + local.get $2 i32.store + local.get $1 local.get $2 - local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 local.get $1 - call $~lib/util/number/utoa_dec_simple + local.get $0 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (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) + (func $std/array/Ref#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 + i32.const 15044 i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - return - end - block $folding-inner0 - local.get $4 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 + i32.const 31456 + i32.const 31504 i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.set $3 - local.get $5 - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $5 - i32.add - local.set $3 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $3 i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - 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 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 + i32.const 15044 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - return - end - block $folding-inner0 - local.get $4 - i32.eqz - if - local.get $0 - f64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/dtoa - local.get $3 - f64.const 0 - f64.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9824 - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - local.get $3 - local.get $3 - f64.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9856 - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9888 - i32.const 9936 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - i32.const 9968 - local.get $3 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 9968 - local.get $1 - call $~lib/memory/memory.copy - 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 $4 - i32.const 9788 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $7 - i32.const 1 - i32.shl + if + i32.const 31456 + i32.const 31504 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9792 - 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 $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - 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 $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 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.shl + local.tee $4 + local.set $6 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 + if local.get $1 - return + local.get $3 + local.get $6 + call $~lib/memory/memory.copy end + local.get $5 + local.get $1 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + 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 $2 + ) + (func $std/array/internalCapacity (param $0 i32) (result i32) + (local $1 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 + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_s + local.get $1 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 $1 - i32.const 1 - i32.sub + local.get $0 + i32.load offset=12 local.tee $3 + local.get $1 + i32.load offset=12 i32.const 0 - i32.lt_s + local.get $1 + select + local.tee $4 + i32.add + local.tee $2 + i32.const 268435455 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - return + i32.const 1056 + i32.const 1104 + i32.const 222 + i32.const 60 + call $~lib/builtins/abort + unreachable end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9036 - i32.load + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.tee $5 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/memory/memory.copy + local.get $0 + local.get $5 + i32.add + local.get $1 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 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.shr_u - local.tee $4 - i32.const 11 - i32.add - i32.mul - i32.const 11 + 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=12 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - 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 $2 - local.get $4 - i32.add - local.set $2 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 local.get $3 i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + local.tee $2 + i32.const 0 local.get $2 - i32.add - local.tee $0 + i32.const 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 + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -20620,691 +24015,663 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $3 i32.const 0 i32.store + local.get $3 + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $4 local.get $1 - 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 8752 - return - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load16_u - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - 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 10 - i32.add - i32.mul - i32.const 10 + if (result i32) + local.get $1 + local.get $4 i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - 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 $2 - local.get $4 - i32.add - local.set $2 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.sub + local.tee $3 + local.get $2 + local.get $3 + i32.lt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.tee $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $2 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $4 + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.ne + if local.get $6 + local.get $5 local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.const 1 + i32.const 2 i32.shl i32.add - i32.load16_u - call $~lib/util/number/itoa_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 $4 local.get $1 - return + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy end + local.get $0 + local.get $4 + local.get $2 + 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 $0 + local.get $3 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i64) + (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 global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 i32.const 0 i32.store + local.get $2 + i32.const 2 + local.get $0 + i32.load offset=12 + local.tee $3 local.get $1 - i32.const 1 - i32.sub - local.tee $4 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 8752 - return - end - block $folding-inner0 - local.get $4 - i32.eqz - if - local.get $0 - i64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 - local.get $3 - 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 $0 - br $__inlined_func$~lib/util/number/utoa64 - end - local.get $3 - i64.const 4294967295 - i64.le_u - if - local.get $3 - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - 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 $1 - call $~lib/util/number/utoa_dec_simple - else - local.get $3 - call $~lib/util/number/decimalCount64High - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/number/utoa_dec_simple - 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 $4 - i32.const 9036 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 20 - i32.add - i32.mul - i32.const 20 + if (result i32) + local.get $1 + local.get $3 i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9040 - 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 $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.tee $1 + i32.sub + local.tee $2 + local.get $2 + i32.const 2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 2 + i32.const 8 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.tee $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $2 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.ne + if + local.get $6 + local.get $5 local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load - call $~lib/util/number/itoa_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 $3 local.get $1 - return + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy end + local.get $0 + local.get $3 + local.get $2 + 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 $0 + local.get $4 ) - (func $~lib/util/number/itoa64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 $1 local.get $0 - i64.eqz + i32.load offset=12 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9344 - return + i32.const 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end - i64.const 0 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.sub + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store local.get $0 + i32.eqz + if + i32.const 5696 + i32.const 1104 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $3 - select - local.tee $0 - i64.const 4294967295 - i64.le_u + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 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 - local.get $0 - i32.wrap_i64 - local.tee $4 - call $~lib/util/number/decimalCount32 - local.get $3 - i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 31456 + i32.const 31504 i32.const 1 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $4 - local.get $1 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.get $3 - i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store + local.get $2 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#map (param $0 i32) (param $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 15044 + i32.lt_s + if + i32.const 31456 + i32.const 31504 i32.const 1 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 + local.set $4 + loop $for-loop|0 + local.get $3 local.get $2 local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - end - local.get $3 - if + i32.load offset=12 + local.tee $5 local.get $2 - i32.const 45 - i32.store16 + local.get $5 + i32.lt_s + select + i32.lt_s + if + local.get $3 + i32.const 2 + i32.shl + local.tee $5 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.set $6 + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.add + local.get $6 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 + i32.const 15044 i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - return + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 local.get $3 - i32.eqz + local.get $5 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $4 + local.get $5 + i32.gt_s + select + i32.lt_s if local.get $0 - 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 $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 $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 + i32.load offset=4 local.get $3 - local.get $5 - i32.gt_s + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered local.get $2 - i32.add - local.set $2 local.get $4 - if - local.get $1 - local.get $2 - 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 $2 - local.get $4 - i32.add - local.set $2 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 + call $~lib/array/Array#push + drop end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $6 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_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 + local.get $2 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 + i32.const 15044 i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - return + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - block $folding-inner0 - local.get $4 - i32.eqz - if - local.get $0 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - br $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 8064 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 + i32.const 8064 i32.store - loop $for-loop|0 + end + block $__inlined_func$~lib/array/Array#sort + local.get $0 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.le_s + br_if $__inlined_func$~lib/array/Array#sort + local.get $0 + i32.load offset=4 + local.set $4 + local.get $6 + i32.const 2 + i32.eq + if local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered + i32.load offset=4 + local.set $3 + local.get $4 + i32.load + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $2 + 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 + i32.store offset=4 + local.get $4 local.get $3 - i32.add - local.set $3 + i32.store + end + br $__inlined_func$~lib/array/Array#sort + end + local.get $6 + i32.const 256 + i32.lt_s + if + local.get $1 + local.set $3 + loop $for-loop|0 local.get $5 + local.get $6 + i32.lt_s if - local.get $1 - local.get $3 - i32.const 1 + local.get $4 + local.get $5 + i32.const 2 i32.shl i32.add - local.get $2 + i32.load + local.set $7 local.get $5 i32.const 1 + i32.sub + local.set $2 + loop $while-continue|1 + local.get $2 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $2 + local.tee $1 + i32.const 1 + i32.sub + local.set $2 + local.get $4 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + br $while-continue|1 + end + end + end + local.get $4 + local.get $2 + i32.const 1 + i32.add + i32.const 2 i32.shl - call $~lib/memory/memory.copy - local.get $3 + i32.add + local.get $7 + i32.store local.get $5 + i32.const 1 i32.add - local.set $3 + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 end - end - local.get $7 - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.tee $0 - i32.gt_s - if + else + local.get $4 + local.get $6 local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + call $~lib/util/sort/weakHeapSort 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 @@ -21312,48 +24679,46 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (param $0 i32) (result 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 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=12 - local.set $5 + 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 $1 + i32.const 0 + i32.store + local.get $1 local.get $0 - i32.load offset=4 - local.set $6 + call $~lib/array/Array#constructor + local.tee $1 + i32.store loop $for-loop|0 + local.get $0 local.get $2 - local.get $5 - i32.lt_s + i32.gt_s if - local.get $6 + local.get $1 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=12 - else - i32.const 0 - end - local.get $3 - i32.add - local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.get $2 + i32.sub + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -21362,71 +24727,233 @@ end end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - local.tee $2 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 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 + local.tee $1 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=12 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=4 + local.get $1 local.get $0 - local.get $4 + call $~lib/array/Array#constructor + local.tee $1 i32.store - local.get $0 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link - i32.const 0 - local.set $2 - loop $for-loop|1 + loop $for-loop|0 + local.get $0 local.get $2 - local.get $5 - i32.lt_s + i32.gt_s if - local.get $6 + local.get $1 local.get $2 - i32.const 2 - i32.shl + call $~lib/math/NativeMath.random + local.get $0 + f64.convert_i32_s + f64.mul + i32.trunc_f64_s + call $~lib/array/Array#__set + local.get $2 + i32.const 1 i32.add - i32.load - local.tee $3 - if - local.get $1 - local.get $4 - i32.add - local.get $3 + 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 + local.get $1 + ) + (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $0 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.le_s + br_if $folding-inner0 + local.get $0 i32.load offset=4 - local.get $3 - i32.load offset=8 - local.tee $3 - call $~lib/memory/memory.copy + local.set $4 + local.get $6 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $4 + i32.load offset=4 + local.tee $3 + i32.store + local.get $2 + local.get $4 + i32.load + local.tee $2 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $2 + 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 + i32.store offset=4 + local.get $4 + local.get $3 + i32.store + end + br $folding-inner0 + end local.get $1 - local.get $3 + local.set $3 + 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 15044 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $1 + i32.const 0 + i32.ge_s + if + block $while-break|1 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 + local.get $4 + local.get $2 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + br $while-continue|1 + end + end + end + local.get $4 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 + global.set $~lib/memory/__stack_pointer + br $folding-inner2 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + br $folding-inner2 end + 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 8 @@ -21434,235 +24961,201 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array<~lib/string/String>#constructor (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) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i64.const 0 i64.store local.get $0 - i32.load offset=12 - local.set $6 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=12 - else - i32.const 0 - end - local.get $4 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 27 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store offset=12 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $0 - i32.store offset=4 - local.get $3 local.get $0 + i32.const 0 i32.store - local.get $3 local.get $0 i32.const 0 + i32.const 0 call $~lib/rt/itcms/__link + local.get $0 i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - if - local.get $0 - local.get $1 - i32.add - local.get $5 - i32.load offset=4 - local.get $5 - i32.load offset=8 - local.tee $5 - call $~lib/memory/memory.copy - local.get $1 - local.get $5 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end + i32.store offset=4 + local.get $0 i32.const 0 - local.set $2 - loop $for-loop|2 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $1 + 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 $0 ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result 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 - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 + i32.const 15044 i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + if + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 + i32.store + i32.const 0 + local.get $0 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.tee $2 - i32.const 0 local.get $2 i32.const 0 i32.gt_s select local.tee $3 - i32.const 2 - i32.const 7 + local.get $1 i32.const 0 - call $~lib/rt/__newArray + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + local.tee $1 + local.get $1 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 + 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 8752 + return + end + i32.const 0 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.eq + local.get $1 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new local.tee $2 i32.store local.get $2 - i32.load offset=4 local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl i32.add local.get $3 - i32.const 2 - i32.shl call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -21670,209 +25163,219 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa32 (param $0 i32) (result 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 - call $~stack_check + 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 - global.get $~lib/memory/__stack_pointer - local.get $2 local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + global.set $~lib/memory/__stack_pointer + i32.const 9344 + return end - local.tee $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.gt_s + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 select local.tee $2 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 + 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.const 2 - i32.shl i32.add - local.tee $6 - local.get $2 - i32.const 2 + local.tee $3 + i32.const 1 i32.shl - call $~lib/memory/memory.copy + 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/utoa32_dec_lut local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + local.get $0 + i32.const 45 + i32.store16 end - local.get $0 - local.get $3 - local.get $2 - 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 $0 ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9344 + return + end global.get $~lib/memory/__stack_pointer - local.get $2 local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s + local.tee $1 + i32.const 100000 + i32.lt_u if (result i32) local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select + 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 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + 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.tee $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select + local.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new local.tee $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 i32.store - local.get $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.add - local.tee $6 local.get $2 - call $~lib/memory/memory.copy - local.get $3 local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $1 - local.get $5 - i32.add - local.get $3 - local.get $1 - i32.sub - call $~lib/memory/memory.copy - end local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 + call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) @@ -21881,372 +25384,528 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $6 - i32.add - local.tee $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 222 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $5 - local.get $2 - i32.const 2 - i32.shl - local.set $2 - local.get $0 - i32.load offset=4 - local.set $0 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.gt_u + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + 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 8752 + return + end + block $folding-inner0 local.get $4 - local.get $5 - i32.add - local.get $0 + i32.eqz + if + local.get $0 + f64.load + local.set $3 + 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-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/dtoa + local.get $3 + f64.const 0 + f64.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11280 + local.set $0 + br $__inlined_func$~lib/util/number/dtoa + end + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + local.get $3 + local.get $3 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11312 + local.set $0 + br $__inlined_func$~lib/util/number/dtoa + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11344 + i32.const 11392 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $__inlined_func$~lib/util/number/dtoa + end + i32.const 11424 + local.get $3 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 11424 + local.get $1 + call $~lib/memory/memory.copy + 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 $4 - i32.add + i32.const 11244 i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 28 + i32.add + i32.mul + i32.const 28 + i32.add local.tee $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - local.get $3 + loop $for-loop|0 + local.get $4 + local.get $6 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 11248 + 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 $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end local.get $7 + local.get $1 + local.get $2 i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 4 + i32.shl i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $2 - local.get $5 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $1 - local.get $6 - i32.const 2 - i32.shl - local.set $5 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $5 - i32.lt_u - if local.get $0 local.get $4 + i32.const 3 + i32.shl i32.add - local.get $0 - local.get $1 - i32.add - i32.load - local.tee $2 - i32.store - local.get $3 + f64.load + call $~lib/util/number/dtoa_buffered local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.set $0 - br $for-loop|1 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array<~lib/string/String>#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result 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.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 + i32.const 15044 i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + if + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 + i64.const 0 + i64.store + local.get $0 + i32.load offset=12 + local.set $5 + local.get $0 + i32.load offset=4 + local.set $6 + loop $for-loop|0 local.get $2 - local.get $3 + local.get $5 i32.lt_s - select + if + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=12 + else + i32.const 0 + end + local.get $3 + i32.add + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray + i32.shl local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=12 + local.get $0 local.get $2 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $1 + local.get $4 + i32.store offset=4 + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 i32.const 0 - local.set $0 - local.get $3 - i32.const 2 - i32.shl - local.set $3 - loop $while-continue|0 - local.get $0 - local.get $3 - i32.lt_u + call $~lib/rt/itcms/__link + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $5 + i32.lt_s if - local.get $0 - local.get $4 - i32.add - local.get $0 - local.get $1 + local.get $6 + local.get $2 + i32.const 2 + i32.shl i32.add i32.load - local.tee $5 - i32.store + local.tee $3 + if + local.get $1 + local.get $4 + i32.add + local.get $3 + i32.load offset=4 + local.get $3 + i32.load offset=8 + local.tee $3 + call $~lib/memory/memory.copy + local.get $1 + local.get $3 + i32.add + local.set $1 + end local.get $2 - local.get $5 i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 4 i32.add - local.set $0 - br $while-continue|0 + local.set $2 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:std/array/ArrayU32#constructor@varargs (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + 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-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 40 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 2 i32.shl - i32.add + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 local.get $3 + i32.store offset=8 + local.get $0 local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + 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 $0 + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - local.get $3 - local.get $2 - 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 - ) - (func $export:std/array/ArrayU32#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $std/array/ArrayU32#constructor@varargs - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#get:length (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $1 local.get $0 i32.store local.get $0 i32.load offset=12 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -22256,13 +25915,27 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store local.get $0 local.get $1 - call $~lib/array/Array#set:length + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -22276,14 +25949,27 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 block $__inlined_func$~lib/array/Array#every (result i32) + i32.const 0 + local.set $2 local.get $0 i32.load offset=12 local.set $4 @@ -22341,23 +26027,32 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 - local.get $1 - local.set $2 i32.const 0 - local.set $1 + local.set $2 local.get $0 i32.load offset=12 local.set $4 block $__inlined_func$~lib/array/Array#findIndex loop $for-loop|0 - local.get $1 + local.get $2 local.get $4 local.get $0 i32.load offset=12 @@ -22370,34 +26065,34 @@ if local.get $0 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 local.get $2 + local.get $0 + local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end i32.const -1 - local.set $1 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -22405,25 +26100,33 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store local.get $1 i32.const 0 local.get $0 - local.tee $2 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $1 i32.const 0 i32.ge_s select i32.add - local.set $1 - local.get $0 - local.get $1 - i32.le_u + local.tee $1 + local.get $2 + i32.ge_u if i32.const 1344 i32.const 1104 @@ -22432,7 +26135,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 @@ -22445,11 +26148,24 @@ global.set $~lib/memory/__stack_pointer ) (func $export:~lib/array/Array#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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -22470,22 +26186,101 @@ i32.const 2147483647 local.set $3 end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill + local.get $1 + local.set $4 + local.get $0 + local.tee $5 + i32.load offset=4 + local.set $6 + local.get $0 + i32.load offset=12 + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + end + local.set $0 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + end + local.set $1 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 ) (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -22502,23 +26297,87 @@ i32.const 0 local.set $2 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s + block $__inlined_func$~lib/array/Array#indexOf + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $2 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.ge_s ) (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -22535,25 +26394,91 @@ i32.const 0 local.set $2 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf + block $__inlined_func$~lib/array/Array#indexOf + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $2 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store + local.get $1 + local.set $3 block $1of1 block $0of1 block $outOfRange @@ -22568,171 +26493,205 @@ i32.load offset=12 local.set $2 end + i32.const -1 + local.set $1 block $__inlined_func$~lib/array/Array#lastIndexOf local.get $0 - local.tee $3 i32.load offset=12 - local.tee $0 + local.tee $4 i32.eqz - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf - end - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf local.get $2 + local.get $4 i32.add - local.get $0 + local.get $4 i32.const 1 i32.sub local.get $2 - local.get $0 local.get $2 - i32.le_s + local.get $4 + i32.ge_s select local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $3 - i32.load offset=4 local.set $2 + local.get $0 + i32.load offset=4 + local.set $0 loop $while-continue|0 - local.get $0 + local.get $2 i32.const 0 i32.ge_s if - local.get $1 - local.get $2 + local.get $3 local.get $0 + local.get $2 + local.tee $1 i32.const 2 i32.shl i32.add i32.load i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $2 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $export:~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $4 - i32.add - local.tee $2 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 222 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - local.tee $5 + 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.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/memory/memory.copy + i32.store local.get $0 - local.get $5 - i32.add local.get $1 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - local.get $2 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.load offset=12 + i32.const 0 + local.get $1 + select + local.tee $4 + i32.add + local.tee $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 222 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.tee $5 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/memory/memory.copy + local.get $0 + local.get $5 + i32.add + local.get $1 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -22766,7 +26725,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -22809,13 +26778,26 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 + i32.const 0 + local.set $2 local.get $0 i32.load offset=12 local.set $4 @@ -22866,82 +26848,99 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store local.get $2 - local.get $5 + local.get $1 + i32.store offset=4 + local.get $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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store local.get $0 i32.load offset=12 - local.tee $3 - local.get $3 - local.get $5 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 3 - global.set $~argumentsLength + local.set $5 + loop $for-loop|0 local.get $3 - local.get $2 + local.get $5 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.load offset=12 + local.tee $4 + local.get $4 + local.get $5 + i32.gt_s + select + i32.lt_s if + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + i32.const 3 + global.set $~argumentsLength local.get $4 local.get $3 - call $~lib/array/Array#push - drop - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $2 + local.get $4 + call $~lib/array/Array#push + drop + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end 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.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return 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.add - global.set $~lib/memory/__stack_pointer - local.get $4 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#shift (param $0 i32) (result i32) (local $1 i32) @@ -22952,7 +26951,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23006,14 +27015,27 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 block $__inlined_func$~lib/array/Array#some (result i32) + i32.const 0 + local.set $2 local.get $0 i32.load offset=12 local.set $4 @@ -23067,7 +27089,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23080,68 +27112,281 @@ global.set $~lib/memory/__stack_pointer ) (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable end - unreachable + i32.const 0 + local.set $1 end + i32.const 2147483647 + local.set $2 + end + 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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 i32.const 0 - local.set $1 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select end - i32.const 2147483647 - local.set $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.const 2 + i32.shl + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable end - unreachable + i32.const 2147483647 + local.set $2 + end + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.sub + local.tee $3 + local.get $2 + local.get $3 + i32.lt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.tee $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $2 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $4 + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.ne + if + local.get $6 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $1 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy end - i32.const 2147483647 - local.set $2 + local.get $0 + local.get $4 + local.get $2 + i32.sub + i32.store offset=12 + 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.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#reverse (param $0 i32) (result i32) (local $1 i32) @@ -23151,7 +27396,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23205,15 +27460,27 @@ local.get $0 ) (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 local.get $0 @@ -23225,109 +27492,283 @@ global.set $~lib/memory/__stack_pointer ) (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $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-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 9040 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 9040 + i32.store + end + local.get $0 + local.get $1 + call $~lib/array/Array#join + 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.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:~lib/array/Array#flat (param $0 i32) (result 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 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 14576 + i32.const 1104 + i32.const 470 + i32.const 7 + call $~lib/builtins/abort + unreachable + ) + (func $export:~lib/array/Array#toString (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 + 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.get $0 i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + local.get $0 + call $~lib/array/Array#toString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:std/array/ArrayU8#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + 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 15044 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable end + i32.const 0 + local.set $1 + end + 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-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 41 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + 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-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort unreachable end - i32.const 9040 - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 9040 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + 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 $0 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinIntegerArray - 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.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array#flat (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 13120 - i32.const 1104 - i32.const 470 - i32.const 7 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $export:~lib/array/Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#toString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:std/array/ArrayU8#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $std/array/ArrayU8#constructor@varargs - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $export:~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23351,14 +27792,27 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 block $__inlined_func$~lib/array/Array#every (result i32) + i32.const 0 + local.set $2 local.get $0 i32.load offset=12 local.set $4 @@ -23414,23 +27868,32 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 - local.get $1 - local.set $2 i32.const 0 - local.set $1 + local.set $2 local.get $0 i32.load offset=12 local.set $4 block $__inlined_func$~lib/array/Array#findIndex loop $for-loop|0 - local.get $1 + local.get $2 local.get $4 local.get $0 i32.load offset=12 @@ -23441,34 +27904,34 @@ select i32.lt_s if - local.get $1 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $0 local.get $2 + local.get $0 + local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end i32.const -1 - local.set $1 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -23476,25 +27939,33 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store local.get $1 i32.const 0 local.get $0 - local.tee $2 i32.load offset=12 - local.tee $0 + local.tee $2 local.get $1 i32.const 0 i32.ge_s select i32.add - local.set $1 - local.get $0 - local.get $1 - i32.le_u + local.tee $1 + local.get $2 + i32.ge_u if i32.const 1344 i32.const 1104 @@ -23503,9 +27974,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load offset=4 local.get $1 + local.get $0 + i32.load offset=4 i32.add i32.load8_u global.get $~lib/memory/__stack_pointer @@ -23518,7 +27989,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23550,11 +28031,22 @@ global.set $~lib/memory/__stack_pointer ) (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23571,23 +28063,87 @@ i32.const 0 local.set $2 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s + block $__inlined_func$~lib/array/Array#indexOf + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $2 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.ge_s ) (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23604,25 +28160,91 @@ i32.const 0 local.set $2 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf + block $__inlined_func$~lib/array/Array#indexOf + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + if + i32.const -1 + local.set $2 + br $__inlined_func$~lib/array/Array#indexOf + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $2 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store + local.get $1 + local.set $3 block $1of1 block $0of1 block $outOfRange @@ -23637,72 +28259,80 @@ i32.load offset=12 local.set $2 end + i32.const -1 + local.set $1 block $__inlined_func$~lib/array/Array#lastIndexOf local.get $0 - local.tee $3 i32.load offset=12 - local.tee $0 + local.tee $4 i32.eqz - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf - end - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf local.get $2 + local.get $4 i32.add - local.get $0 + local.get $4 i32.const 1 i32.sub local.get $2 - local.get $0 local.get $2 - i32.le_s + local.get $4 + i32.ge_s select local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $3 - i32.load offset=4 local.set $2 + local.get $0 + i32.load offset=4 + local.set $0 loop $while-continue|0 - local.get $0 + local.get $2 i32.const 0 i32.ge_s if - local.get $0 local.get $2 + local.tee $1 + local.get $0 i32.add i32.load8_u - local.get $1 + local.get $3 i32.const 255 i32.and i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $2 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23723,80 +28353,109 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $4 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 222 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - local.tee $5 - local.get $0 - i32.load offset=4 - local.get $3 - call $~lib/memory/memory.copy - local.get $3 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 - local.get $4 - 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 - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 + i32.load offset=12 + i32.const 0 + local.get $1 + select + local.tee $4 + i32.add + local.tee $3 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 222 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 0 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.tee $5 + local.get $0 + i32.load offset=4 + local.get $2 + call $~lib/memory/memory.copy + local.get $2 + local.get $5 + i32.add + local.get $1 + i32.load offset=4 + local.get $4 + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#copyWithin@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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23813,15 +28472,104 @@ i32.const 2147483647 local.set $3 end + local.get $3 + local.get $0 + local.tee $4 + i32.load offset=12 + local.tee $5 + local.get $3 + local.get $5 + i32.lt_s + select + local.set $3 local.get $0 + i32.load offset=4 + local.tee $6 local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $5 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $5 + local.get $1 + local.get $5 + i32.lt_s + select + end + local.tee $1 + i32.add + local.get $6 local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $5 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $5 + local.get $2 + local.get $5 + i32.lt_s + select + end + local.tee $0 + i32.add local.get $3 - call $~lib/array/Array#copyWithin + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $5 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $5 + local.get $3 + local.get $5 + i32.lt_s + select + end + local.get $0 + i32.sub + local.tee $2 + local.get $5 + local.get $1 + i32.sub + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select + call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 ) (func $export:~lib/array/Array#pop (param $0 i32) (result i32) (local $1 i32) @@ -23830,7 +28578,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -23871,13 +28629,26 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 + i32.const 0 + local.set $2 local.get $0 i32.load offset=12 local.set $4 @@ -23926,80 +28697,97 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store local.get $2 - local.get $5 + local.get $1 + i32.store offset=4 + local.get $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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 0 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store local.get $0 i32.load offset=12 - local.tee $3 - local.get $3 - local.get $5 - i32.gt_s - select - i32.lt_s - if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.set $3 - i32.const 3 - global.set $~argumentsLength + local.set $5 + loop $for-loop|0 local.get $3 - local.get $2 + local.get $5 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.load offset=12 + local.tee $4 + local.get $4 + local.get $5 + i32.gt_s + select + i32.lt_s if + local.get $3 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + local.set $4 + i32.const 3 + global.set $~argumentsLength local.get $4 local.get $3 - call $~lib/array/Array#push - drop + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $2 + local.get $4 + call $~lib/array/Array#push + drop + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return 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.add - global.set $~lib/memory/__stack_pointer - local.get $4 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#shift (param $0 i32) (result i32) (local $1 i32) @@ -24009,7 +28797,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -24060,14 +28858,27 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 block $__inlined_func$~lib/array/Array#some (result i32) + i32.const 0 + local.set $2 local.get $0 i32.load offset=12 local.set $4 @@ -24121,7 +28932,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -24161,143 +28982,264 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable end - unreachable + i32.const 0 + local.set $1 end - i32.const 0 - local.set $1 + i32.const 2147483647 + local.set $2 end - i32.const 2147483647 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result 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 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 local.get $1 - local.get $3 - i32.add - local.tee $1 i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 i32.const 0 i32.gt_s select - else + local.tee $3 + i32.const 0 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 local.get $1 + local.get $0 + i32.load offset=4 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store local.get $3 + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $4 local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.sub + local.tee $3 + local.get $2 local.get $3 i32.lt_s select - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) + local.tee $2 + i32.const 0 local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 0 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store local.get $3 + i32.load offset=4 + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $5 i32.add - local.tee $2 - i32.const 0 + local.tee $6 local.get $2 - i32.const 0 - i32.gt_s - select - else + call $~lib/memory/memory.copy + local.get $4 + local.get $1 local.get $2 - local.get $3 + i32.add + local.tee $1 + i32.ne + if + local.get $6 + local.get $1 + local.get $5 + i32.add + local.get $4 + local.get $1 + i32.sub + call $~lib/memory/memory.copy + end + local.get $0 + local.get $4 local.get $2 + i32.sub + i32.store offset=12 + 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.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 + return end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#reverse (param $0 i32) (result i32) (local $1 i32) @@ -24307,7 +29249,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -24359,106 +29311,268 @@ local.get $0 ) (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $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-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 $1 + global.get $~lib/memory/__stack_pointer + i32.const 14640 + i32.store + end + block $__inlined_func$~lib/array/Array#sort + local.get $0 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.le_s + br_if $__inlined_func$~lib/array/Array#sort + local.get $0 + i32.load offset=4 + local.set $4 + local.get $6 + i32.const 2 + i32.eq + if + local.get $4 + i32.load8_u offset=1 + local.set $3 + local.get $4 + i32.load8_u + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $2 + 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 + i32.store8 offset=1 + local.get $4 + local.get $3 + i32.store8 + end + br $__inlined_func$~lib/array/Array#sort + end + local.get $6 + i32.const 256 + i32.lt_s + if + local.get $1 + local.set $3 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + local.get $4 + local.get $5 + i32.add + i32.load8_u + local.set $7 + local.get $5 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|1 + local.get $2 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $2 + local.tee $1 + i32.const 1 + i32.sub + local.set $2 + local.get $4 + local.get $1 + i32.const 1 + i32.add + i32.add + local.get $8 + i32.store8 + br $while-continue|1 + end + end + end + local.get $4 + local.get $2 + i32.const 1 + i32.add + i32.add + local.get $7 + i32.store8 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + else + local.get $4 + local.get $6 + local.get $1 + call $~lib/util/sort/weakHeapSort end - unreachable end - i32.const 13184 - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 13184 - i32.store + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - 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.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $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-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 - unreachable + i32.const 9040 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 9040 + i32.store end - i32.const 9040 - local.set $1 + local.get $0 + local.get $1 + call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinIntegerArray - 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.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array#toString (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store @@ -24474,54 +29588,69 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable end - unreachable + i32.const 0 + local.set $1 end + 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-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 42 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 42 - call $~lib/rt/itcms/__new + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#constructor local.tee $0 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $0 - 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 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array<~lib/string/String>#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24531,81 +29660,97 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array<~lib/string/String>#every (result i32) + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 15044 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.tee $2 local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/array/Array<~lib/string/String>#every (result i32) local.get $2 - local.get $4 + 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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.store - i32.const 3 - global.set $~argumentsLength + local.set $2 + loop $for-loop|0 local.get $3 local.get $2 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz + i32.load offset=12 + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select + i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$~lib/array/Array<~lib/string/String>#every + end + local.get $3 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$~lib/array/Array<~lib/string/String>#every + local.set $3 + br $for-loop|0 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array<~lib/string/String>#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24615,85 +29760,97 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.set $2 - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $4 - block $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex - loop $for-loop|0 - local.get $1 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.store - i32.const 3 - global.set $~argumentsLength + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $0 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + 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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + block $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex + loop $for-loop|0 + local.get $2 local.get $3 - local.get $1 local.get $0 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex + i32.load + local.tee $4 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 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 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $1 + local.get $2 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array<~lib/string/String>#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24701,82 +29858,108 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 0 - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.const 0 - i32.ge_s - select - i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 125 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - local.get $0 - i32.eqz - if - i32.const 5696 - i32.const 1104 - i32.const 129 - i32.const 40 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $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 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 0 + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 + i32.const 0 + i32.ge_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 125 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 5696 + i32.const 1104 + i32.const 129 + i32.const 40 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (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 global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $4 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $4 local.get $1 i32.store offset=4 block $2of2 @@ -24797,76 +29980,75 @@ local.set $3 end local.get $0 - local.tee $4 i32.load offset=4 - local.set $6 + local.set $5 local.get $0 i32.load offset=12 - local.set $5 + local.set $4 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $5 + local.get $4 i32.add - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select else local.get $2 - local.get $5 + local.get $4 local.get $2 - local.get $5 + local.get $4 i32.lt_s select end - local.set $0 + local.set $2 local.get $3 i32.const 0 i32.lt_s if (result i32) local.get $3 - local.get $5 + local.get $4 i32.add - local.tee $2 + local.tee $3 i32.const 0 - local.get $2 + local.get $3 i32.const 0 i32.gt_s select else local.get $3 - local.get $5 + local.get $4 local.get $3 - local.get $5 + local.get $4 i32.lt_s select end - local.set $2 + local.set $3 loop $for-loop|0 - local.get $0 local.get $2 + local.get $3 i32.lt_s if - local.get $6 - local.get $0 + local.get $5 + local.get $2 i32.const 2 i32.shl i32.add local.get $1 i32.store - local.get $4 + local.get $0 local.get $1 i32.const 1 call $~lib/rt/itcms/__link - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -24874,18 +30056,78 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 ) (func $export:~lib/array/Array<~lib/string/String>#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $3 local.get $0 i32.store + local.get $3 + local.get $1 + i32.store offset=4 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#indexOf + i32.const 0 + i32.ge_s + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array<~lib/string/String>#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 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 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 $3 + local.get $0 + i32.store + local.get $3 local.get $1 i32.store offset=4 block $1of1 @@ -24896,694 +30138,1157 @@ i32.sub br_table $0of1 $1of1 $outOfRange end - unreachable + unreachable + end + i32.const 0 + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result 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 + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $0 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + i32.load offset=12 + local.set $2 + end + 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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + local.get $0 + i32.load offset=12 + 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 -1 + local.set $2 + br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + end + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_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 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + end + local.get $2 + i32.const 1 + i32.sub + 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 - i32.const 0 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf - i32.const 0 - i32.ge_s - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $export:~lib/array/Array<~lib/string/String>#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.store offset=4 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf + call $~lib/array/Array<~lib/string/String>#push global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#concat (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) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.load offset=12 + i32.const 0 + local.get $1 + select + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $4 + i32.add + local.tee $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 222 + i32.const 60 + call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 2 + i32.shl + local.set $4 local.get $0 - i32.load offset=12 - local.set $2 + i32.load offset=4 + local.set $0 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $3 + local.get $5 + i32.add + local.get $0 + local.get $3 + i32.add + i32.load + local.tee $7 + i32.store + local.get $2 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $4 + local.get $5 + i32.add + local.set $3 + local.get $1 + i32.load offset=4 + local.set $1 + local.get $6 + i32.const 2 + i32.shl + local.set $5 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $5 + i32.lt_u + if + local.get $0 + local.get $3 + i32.add + local.get $0 + local.get $1 + i32.add + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|1 + end + 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.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:~lib/array/Array<~lib/string/String>#pop (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + 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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - local.tee $3 i32.load offset=12 - local.tee $0 - i32.eqz + local.tee $1 + i32.const 1 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + i32.const 2176 + i32.const 1104 + i32.const 269 + i32.const 21 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 - local.get $2 - i32.add - local.get $0 + i32.load offset=4 + local.get $1 i32.const 1 i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 local.get $2 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:~lib/array/Array<~lib/string/String>#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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 + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 + i32.store local.get $2 - i32.le_s - select + local.get $1 + i32.store offset=4 local.get $2 - i32.const 0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - select - local.set $0 - local.get $3 - i32.load offset=4 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 local.set $2 - loop $while-continue|0 + loop $for-loop|0 + local.get $3 + local.get $2 local.get $0 - i32.const 0 - i32.ge_s + i32.load offset=12 + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 local.get $0 + i32.load offset=4 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $4 i32.store + i32.const 3 + global.set $~argumentsLength + local.get $4 local.get $3 - local.get $1 - call $~lib/string/String.__eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - end local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $3 i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 + i32.add + local.set $3 + br $for-loop|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 $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $export:~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#push - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#concat - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $export:~lib/array/Array<~lib/string/String>#pop (param $0 i32) (result i32) - (local $1 i32) + (func $export:~lib/array/Array<~lib/string/String>#filter (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 2176 - i32.const 1104 - i32.const 269 - i32.const 21 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + 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 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 + local.get $3 + local.get $5 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $4 + local.get $5 + i32.gt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + 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.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 + i32.const 31456 + i32.const 31504 i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - 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.add - global.set $~lib/memory/__stack_pointer - local.get $2 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $export:~lib/array/Array<~lib/string/String>#forEach (param $0 i32) (param $1 i32) + (func $export:~lib/array/Array<~lib/string/String>#shift (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + 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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select + local.tee $2 + i32.const 1 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 2176 + i32.const 1104 + i32.const 328 + i32.const 21 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.load + local.tee $3 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $4 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $2 + i32.store offset=12 + 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.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return 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.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $export:~lib/array/Array<~lib/string/String>#filter (param $0 i32) (param $1 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $5 - i32.gt_s - select + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.store offset=4 - i32.const 3 - global.set $~argumentsLength - local.get $3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/array/Array<~lib/string/String>#some (result i32) local.get $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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $4 + i32.load offset=12 + local.set $2 + loop $for-loop|0 local.get $3 - call $~lib/array/Array<~lib/string/String>#push - drop + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/array/Array<~lib/string/String>#some + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end - local.get $2 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return 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.add - global.set $~lib/memory/__stack_pointer - local.get $4 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $export:~lib/array/Array<~lib/string/String>#shift (param $0 i32) (result i32) - (local $1 i32) + (func $export:~lib/array/Array<~lib/string/String>#unshift (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 + i32.const 15044 i32.lt_s if - i32.const 2176 - i32.const 1104 - i32.const 328 - i32.const 21 + 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.get $0 - i32.load offset=4 local.tee $2 - i32.load - local.tee $3 + local.get $0 i32.store local.get $2 - local.get $2 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.tee $3 i32.const 4 i32.add - local.get $1 + local.get $3 + local.get $2 i32.const 1 i32.sub - local.tee $1 i32.const 2 i32.shl - local.tee $4 call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - i32.const 0 + local.get $3 + local.get $1 i32.store local.get $0 local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $2 i32.store offset=12 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.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 ) - (func $export:~lib/array/Array<~lib/string/String>#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $export:~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/array/Array<~lib/string/String>#some (result i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const 2147483647 + local.set $2 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|0 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 local.get $3 - local.get $4 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 i32.gt_s select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $1 + i32.const 0 + local.set $0 + local.get $3 + i32.const 2 + i32.shl + local.set $3 + loop $while-continue|0 + local.get $0 + local.get $3 + i32.lt_u if - global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl + local.get $4 i32.add - i32.load - local.tee $3 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $2 local.get $0 local.get $1 + i32.add i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - br $__inlined_func$~lib/array/Array<~lib/string/String>#some - end + local.tee $5 + i32.store local.get $2 + local.get $5 i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 i32.add - local.set $2 - br $for-loop|0 + local.set $0 + 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 0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array<~lib/string/String>#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 + i32.const 31456 + i32.const 31504 i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store - local.get $0 - local.get $1 i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + call $~lib/builtins/abort + unreachable ) - (func $export:~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $2of2 - block $1of2 - block $0of2 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 block $outOfRange global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange end unreachable end + i32.const 2147483647 + local.set $2 + end + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $1 i32.const 0 - local.set $1 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select end - i32.const 2147483647 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#slice - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.tee $1 + i32.sub + local.tee $3 + local.get $2 + local.get $3 + i32.lt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.tee $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $2 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $4 + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.ne + if + local.get $6 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $1 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy end - i32.const 2147483647 - local.set $2 + local.get $0 + local.get $4 + local.get $2 + i32.sub + i32.store offset=12 + 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.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#splice - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array<~lib/string/String>#reverse (param $0 i32) (result i32) (local $1 i32) @@ -25593,174 +31298,231 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $1 - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 - i32.load offset=4 - local.set $2 + i32.store + local.get $1 + 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-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $1 - loop $while-continue|0 - local.get $1 + i32.load offset=12 + local.tee $2 + if + local.get $0 + i32.load offset=4 + local.set $1 + local.get $0 + i32.load offset=4 local.get $2 - i32.gt_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load - local.tee $3 - i32.store - local.get $2 - local.get $1 - i32.load - i32.store + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 local.get $1 - local.get $3 - i32.store local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 4 - i32.sub - local.set $1 - br $while-continue|0 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $3 + i32.store + local.get $1 + local.get $2 + i32.load + i32.store + local.get $2 + local.get $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + br $while-continue|0 + end end 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $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-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 - unreachable + i32.const 14672 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 14672 + i32.store end - i32.const 13216 - local.set $1 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#sort global.get $~lib/memory/__stack_pointer - i32.const 13216 - i32.store + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#sort - 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.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $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-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 - unreachable + i32.const 9040 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 9040 + i32.store end - i32.const 9040 - local.set $1 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#join global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/string/String|null> - 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.add - global.set $~lib/memory/__stack_pointer + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $export:~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.get $0 i32.store diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 4fcd5d091d..ef273bb811 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1,12 +1,11 @@ (module - (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_=>_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 (func (param i32) (result 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))) (memory $0 1) @@ -45,15 +44,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18228)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -101,49 +91,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -168,7 +119,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -191,7 +142,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -201,15 +152,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -245,7 +201,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -552,12 +530,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -911,7 +889,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -974,7 +957,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1054,7 +1042,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18228 i32.ge_u if @@ -1064,19 +1052,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1093,11 +1081,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1107,10 +1098,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1131,28 +1124,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1249,268 +1242,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1168 - i32.const 1504 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1608,6 +1402,10 @@ ) (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 @@ -1625,12 +1423,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1646,13 +1444,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1666,801 +1465,1822 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $2 - call $~lib/rt/tlsf/allocateBlock + local.get $6 + i32.const 1073741820 + i32.ge_u + if + i32.const 1168 + i32.const 1504 + i32.const 458 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/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 $0 - local.get $1 + 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 - 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 + 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 $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq + 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 - 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 + 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 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 - i32.const 1232 - i32.const 294 + 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 + 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.const 20 - i32.sub - local.tee $1 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.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 - local.tee $0 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + 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 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state + local.tee $4 i32.const 1 - i32.eq - i32.const 0 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 local.get $2 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end end - ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array - 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 $folding-inner0 $~lib/array/Array $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $invalid - end - return - end - return - end + i32.const 3 + i32.and + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if local.get $0 + local.get $1 i32.load - call $~lib/rt/itcms/__visit - return + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 end - unreachable end - local.get $0 - i32.load - local.tee $0 + local.get $2 + i32.const 8 + i32.and if local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - ) - (func $~start - call $start:std/arraybuffer - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1844 - i32.lt_s - if - i32.const 18256 - i32.const 18304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:std/arraybuffer - (local $0 i32) + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + 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 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + 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) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + 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 $1 + 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 $0 + 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 $0 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + 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 $folding-inner0 $~lib/array/Array $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:std/arraybuffer + ) + (func $start:std/arraybuffer + (local $0 i32) (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - memory.size - i32.const 16 - i32.shl - i32.const 18228 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1280 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1312 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1456 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 8 - call $~lib/memory/memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 8 - i32.ne - if + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1844 + 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 + i32.const 0 + i32.store offset=16 + memory.size + i32.const 16 + i32.shl + i32.const 18228 + 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 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1844 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 8 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -1 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.const 3 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -3 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -4 + i32.const 42 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 42 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 38 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 1844 + 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 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 - i32.const 1568 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 8 - i32.ne - if + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.store offset=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 1844 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1568 + i32.store i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 7 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1632 + i32.const 8 + call $~lib/memory/memory.copy + local.get $1 + local.get $0 + i32.store + i32.const 16 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const -1 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.ne - if + call $~lib/rt/itcms/__new + local.tee $1 + local.get $0 + i32.store + local.get $1 + local.get $0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.store offset=12 + 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=12 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1844 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1568 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const 3 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.ne - if + i32.store + local.get $1 + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + 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.tee $0 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + i32.load + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + 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 1844 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 6 - i32.ne - if + i32.store + local.get $0 + i32.const 12 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const -3 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.ne - if + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const -4 - i32.const 42 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 4 - i32.ne - if + call $~lib/rt/itcms/__link + local.get $0 i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 42 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - if + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if + i32.store offset=8 + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.gt_u + local.get $2 + i32.const 1073741820 + i32.gt_u + i32.or + if + i32.const 1056 + i32.const 1664 + i32.const 25 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + 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 + i32.store offset=12 + i32.const 18228 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state i32.const 0 - i32.const 1568 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.const 1632 - i32.const 8 - call $~lib/memory/memory.copy - 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 $0 - local.get $1 - call $~lib/rt/itcms/__link - 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 2 - i32.store offset=12 - 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 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - 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 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.gt_u - local.get $2 - i32.const 1073741820 - i32.gt_u - i32.or - if - i32.const 1056 - i32.const 1664 - i32.const 25 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - 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 - i32.store offset=12 - i32.const 18228 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|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|0 + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + return 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 20 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 18256 + i32.const 18304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2468,7 +3288,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1844 + i32.lt_s + if + i32.const 18256 + i32.const 18304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -2552,7 +3382,17 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1844 + i32.lt_s + if + i32.const 18256 + i32.const 18304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -2568,7 +3408,10 @@ end local.get $0 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link local.get $0 i32.const 0 i32.store offset=4 @@ -2602,7 +3445,10 @@ call $~lib/memory/memory.fill local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#set:buffer + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 91afc24b3d..6ca003e3aa 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1,18 +1,16 @@ (module (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 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_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -52,15 +50,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18172)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -108,49 +97,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -175,7 +125,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -198,7 +148,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -208,15 +158,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -252,7 +207,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -559,12 +536,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -918,7 +895,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -981,7 +963,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1061,7 +1048,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18172 i32.ge_u if @@ -1071,19 +1058,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1100,11 +1087,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1114,10 +1104,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1138,28 +1130,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1256,268 +1248,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1168 - i32.const 1504 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1615,6 +1408,10 @@ ) (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 @@ -1632,12 +1429,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1653,13 +1450,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1673,68 +1471,281 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.store - local.get $1 + local.get $6 + i32.const 1073741820 + i32.ge_u if - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - 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 $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.const 1168 + i32.const 1504 + i32.const 458 + i32.const 30 + 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 + 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/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + 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 $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if local.get $0 i32.const 20 @@ -1743,8 +1754,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1756,7 +1765,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1788,19 +1797,6 @@ local.get $2 i32.store8 ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - ) (func $~lib/dataview/DataView#getFloat32 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $1 i32.const 31 @@ -1833,37 +1829,22 @@ i32.load offset=4 i32.add i32.load - call $~lib/polyfills/bswap + local.tee $0 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or f32.reinterpret_i32 end ) - (func $~lib/polyfills/bswap (param $0 i64) (result i64) - local.get $0 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $0 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $0 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $0 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - ) (func $~lib/dataview/DataView#getFloat64 (param $0 i32) (param $1 i32) (result f64) + (local $2 i64) local.get $0 i32.load offset=8 i32.const 8 @@ -1885,7 +1866,30 @@ local.get $0 i32.load offset=4 i64.load - call $~lib/polyfills/bswap + local.tee $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr f64.reinterpret_i64 end ) @@ -1908,17 +1912,6 @@ i32.add i32.load8_s ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.or - ) (func $~lib/dataview/DataView#getInt16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 31 @@ -1949,7 +1942,14 @@ local.get $0 else local.get $0 - call $~lib/polyfills/bswap + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or end ) (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -1982,7 +1982,16 @@ local.get $0 else local.get $0 - call $~lib/polyfills/bswap + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or end ) (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (result i64) @@ -2008,7 +2017,29 @@ local.get $2 else local.get $2 - call $~lib/polyfills/bswap + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr end ) (func $~lib/dataview/DataView#getUint8 (param $0 i32) (param $1 i32) (result i32) @@ -2060,7 +2091,14 @@ local.get $0 else local.get $0 - call $~lib/polyfills/bswap + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or end ) (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -2093,7 +2131,16 @@ local.get $0 else local.get $0 - call $~lib/polyfills/bswap + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or end ) (func $~lib/dataview/DataView#getUint64 (param $0 i32) (param $1 i32) (result i64) @@ -2119,7 +2166,29 @@ local.get $2 else local.get $2 - call $~lib/polyfills/bswap + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr end ) (func $~lib/dataview/DataView#setFloat32 (param $0 i32) (param $1 f32) (param $2 i32) @@ -2146,11 +2215,22 @@ i32.load offset=4 local.get $1 i32.reinterpret_f32 - call $~lib/polyfills/bswap + local.tee $0 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or i32.store end ) (func $~lib/dataview/DataView#setFloat64 (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i64) local.get $0 i32.load offset=8 i32.const 8 @@ -2174,7 +2254,30 @@ i32.load offset=4 local.get $1 i64.reinterpret_f64 - call $~lib/polyfills/bswap + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $3 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr i64.store end ) @@ -2198,7 +2301,14 @@ local.get $1 else local.get $1 - call $~lib/polyfills/bswap + i32.const 8 + i32.shl + local.get $1 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or end i32.store16 ) @@ -2222,7 +2332,16 @@ local.get $1 else local.get $1 - call $~lib/polyfills/bswap + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $1 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or end i32.store ) @@ -2246,7 +2365,29 @@ local.get $1 else local.get $1 - call $~lib/polyfills/bswap + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $1 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr end i64.store ) @@ -2270,7 +2411,14 @@ local.get $1 else local.get $1 - call $~lib/polyfills/bswap + i32.const 8 + i32.shl + local.get $1 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or end i32.store16 ) @@ -2294,7 +2442,16 @@ local.get $1 else local.get $1 - call $~lib/polyfills/bswap + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $1 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or end i32.store ) @@ -2318,7 +2475,29 @@ local.get $1 else local.get $1 - call $~lib/polyfills/bswap + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $1 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr end i64.store ) @@ -2360,19 +2539,6 @@ (func $~start call $start:std/dataview ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1788 - i32.lt_s - if - i32.const 18192 - i32.const 18240 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $start:std/dataview (local $0 i32) (local $1 i32) @@ -2382,1731 +2548,1769 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 18172 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1280 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1312 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1456 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.eqz - if + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1788 + 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 0 + i32.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 18172 + 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 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1788 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 12 - i32.const 2 + i32.const 3 call $~lib/rt/itcms/__new local.tee $1 i32.store - end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 8 - call $~lib/memory/memory.fill - local.get $1 - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 0 - i32.const 246 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 224 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 88 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 159 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 4 - i32.const 130 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 5 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 6 - i32.const 67 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 7 - i32.const 95 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - call $~lib/dataview/DataView#constructor - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const -4.592586247781397e-20 - f32.ne - if - i32.const 0 - i32.const 1696 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const -2.3413961970849473e-37 - f32.ne - if + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1788 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + end + local.get $1 i32.const 0 - i32.const 1696 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 77105877018631129268224 - f32.ne - if + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $1 i32.const 0 - i32.const 1696 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 229.51023864746094 - f32.ne - if + i32.store offset=4 + local.get $1 i32.const 0 - i32.const 1696 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 14079802746555334656 - f32.ne - if + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 0 - i32.const 1696 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -2275140518817895515269171e9 - f32.ne - if + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 8 + call $~lib/memory/memory.fill + local.get $1 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.const 8 + 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 $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.store + local.get $1 i32.const 0 - i32.const 1696 - i32.const 21 + i32.const 246 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 224 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 88 + call $~lib/typedarray/Uint8Array#__set + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -62437351080004157440 - f32.ne - if + i32.const 159 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 4 + i32.const 130 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 5 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 6 + i32.const 67 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 7 + i32.const 95 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + 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 + call $~lib/dataview/DataView#constructor + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 22 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const -4.592586247781397e-20 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const -2.3413961970849473e-37 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 77105877018631129268224 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const 1403059112509440 - f32.ne - if + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 229.51023864746094 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 14079802746555334656 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -5.522466503261712e-20 - f32.ne - if i32.const 0 - i32.const 1696 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -1.6843597451835358e-37 - f32.ne - if + call $~lib/dataview/DataView#getFloat32 + f32.const -2275140518817895515269171e9 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.const 0 - i32.const 1696 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getFloat64 - f64.const 7936550095674706383278551e126 - f64.ne - if + call $~lib/dataview/DataView#getFloat32 + f32.const -62437351080004157440 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 i32.const 0 - i32.const 1696 - i32.const 27 + call $~lib/dataview/DataView#getFloat32 + f32.const 1403059112509440 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getFloat64 - f64.const -411777475818852546741639e241 - f64.ne - if i32.const 0 - i32.const 1696 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getInt8 - i32.const -10 - i32.ne - if + call $~lib/dataview/DataView#getFloat32 + f32.const -5.522466503261712e-20 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 i32.const 0 - i32.const 1696 - i32.const 30 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getInt8 - i32.const -32 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 31 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/dataview/DataView#getInt8 - i32.const 88 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/dataview/DataView#getInt8 - i32.const -97 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/dataview/DataView#getInt8 - i32.const -126 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - call $~lib/dataview/DataView#getInt8 - i32.const 101 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - call $~lib/dataview/DataView#getInt8 - i32.const 67 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 7 - call $~lib/dataview/DataView#getInt8 - i32.const 95 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57590 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 22752 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40792 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33439 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 25986 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 17253 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 24387 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 63200 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57432 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 22687 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40834 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 50 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33381 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 51 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 25923 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 17247 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 53 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const -1621565194 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const -2103486240 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1703059288 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1130726047 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1598252418 - i32.ne - if + call $~lib/dataview/DataView#getFloat32 + f32.const -1.6843597451835358e-37 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getFloat64 + f64.const 7936550095674706383278551e126 + f64.ne + if + i32.const 0 + i32.const 1696 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -153069409 - i32.ne - if + call $~lib/dataview/DataView#getFloat64 + f64.const -411777475818852546741639e241 + f64.ne + if + i32.const 0 + i32.const 1696 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 61 + call $~lib/dataview/DataView#getInt8 + i32.const -10 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getInt8 + i32.const -32 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/dataview/DataView#getInt8 + i32.const 88 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -531062910 - i32.ne - if + call $~lib/dataview/DataView#getInt8 + i32.const -97 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + call $~lib/dataview/DataView#getInt8 + i32.const -126 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + call $~lib/dataview/DataView#getInt8 + i32.const 101 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 6 + call $~lib/dataview/DataView#getInt8 + i32.const 67 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 7 + call $~lib/dataview/DataView#getInt8 + i32.const 95 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 62 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 57590 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 22752 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 40792 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const 1486848613 - i32.ne - if + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 33439 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 25986 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 17253 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 6 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 24387 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -1618844349 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -2107292833 - i32.ne - if + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 63200 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.const 0 - i32.const 1696 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getInt64 - i64.const 6864441868736323830 - i64.ne - if + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 57432 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 i32.const 0 - i32.const 1696 - i32.const 67 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 22687 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getInt64 - i64.const -657428103485373601 - i64.ne - if i32.const 0 - i32.const 1696 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getUint8 - i32.const 246 - i32.ne - if + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 40834 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 50 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 i32.const 0 - i32.const 1696 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getUint8 - i32.const 224 - i32.ne - if + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 33381 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 i32.const 0 - i32.const 1696 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/dataview/DataView#getUint8 - i32.const 88 - i32.ne - if + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 25923 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 6 i32.const 0 - i32.const 1696 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/dataview/DataView#getUint8 - i32.const 159 - i32.ne - if + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 17247 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 73 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const -1621565194 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const -2103486240 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1703059288 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/dataview/DataView#getUint8 - i32.const 130 - i32.ne - if + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1130726047 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1598252418 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - call $~lib/dataview/DataView#getUint8 - i32.const 101 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 75 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - call $~lib/dataview/DataView#getUint8 - i32.const 67 - i32.ne - if + call $~lib/dataview/DataView#getInt32 + i32.const -153069409 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.const 0 - i32.const 1696 - i32.const 76 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 7 - call $~lib/dataview/DataView#getUint8 - i32.const 95 - i32.ne - if + call $~lib/dataview/DataView#getInt32 + i32.const -531062910 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 i32.const 0 - i32.const 1696 - i32.const 77 + call $~lib/dataview/DataView#getInt32 + i32.const 1486848613 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 57590 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 22752 - i32.ne - if + call $~lib/dataview/DataView#getInt32 + i32.const -1618844349 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 i32.const 0 - i32.const 1696 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 40792 - i32.ne - if + call $~lib/dataview/DataView#getInt32 + i32.const -2107292833 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getInt64 + i64.const 6864441868736323830 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getInt64 + i64.const -657428103485373601 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 81 + call $~lib/dataview/DataView#getUint8 + i32.const 246 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getUint8 + i32.const 224 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/dataview/DataView#getUint8 + i32.const 88 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 33439 - i32.ne - if + call $~lib/dataview/DataView#getUint8 + i32.const 159 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + call $~lib/dataview/DataView#getUint8 + i32.const 130 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + call $~lib/dataview/DataView#getUint8 + i32.const 101 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 75 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 6 + call $~lib/dataview/DataView#getUint8 + i32.const 67 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 7 + call $~lib/dataview/DataView#getUint8 + i32.const 95 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 82 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 57590 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 79 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 22752 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 40792 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 25986 - i32.ne - if + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 33439 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 25986 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 17253 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 6 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 24387 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 17253 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 24387 - i32.ne - if + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 63200 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.const 0 - i32.const 1696 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 63200 - i32.ne - if + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 57432 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 i32.const 0 - i32.const 1696 - i32.const 87 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 22687 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 57432 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 22687 - i32.ne - if + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 40834 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 i32.const 0 - i32.const 1696 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 40834 - i32.ne - if + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 33381 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 i32.const 0 - i32.const 1696 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 33381 - i32.ne - if + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 25923 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 6 i32.const 0 - i32.const 1696 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 25923 - i32.ne - if + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 17247 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 92 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -1621565194 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -2103486240 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1703059288 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 17247 - i32.ne - if + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1130726047 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1598252418 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 93 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -1621565194 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -2103486240 - i32.ne - if + call $~lib/dataview/DataView#getUint32 + i32.const -153069409 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.const 0 - i32.const 1696 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1703059288 - i32.ne - if + call $~lib/dataview/DataView#getUint32 + i32.const -531062910 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 102 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 i32.const 0 - i32.const 1696 - i32.const 97 + call $~lib/dataview/DataView#getUint32 + i32.const 1486848613 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1130726047 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1598252418 - i32.ne - if + call $~lib/dataview/DataView#getUint32 + i32.const -1618844349 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 i32.const 0 - i32.const 1696 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -153069409 - i32.ne - if + call $~lib/dataview/DataView#getUint32 + i32.const -2107292833 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getUint64 + i64.const 6864441868736323830 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1696 - i32.const 101 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -531062910 - i32.ne - if + call $~lib/dataview/DataView#getUint64 + i64.const -657428103485373601 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + f32.const 1.5976661625240943e-18 + i32.const 1 + call $~lib/dataview/DataView#setFloat32 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const 1486848613 - i32.ne - if + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 1.5976661625240943e-18 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + f32.const 1976281973381696323584 i32.const 0 - i32.const 1696 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -1618844349 - i32.ne - if + call $~lib/dataview/DataView#setFloat32 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -2107292833 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getUint64 - i64.const 6864441868736323830 - i64.ne - if + call $~lib/dataview/DataView#getFloat32 + f32.const 1976281973381696323584 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + f64.const -1094252199637739024055454e124 + i32.const 1 + call $~lib/dataview/DataView#setFloat64 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getFloat64 + f64.const -1094252199637739024055454e124 + f64.ne + if + i32.const 0 + i32.const 1696 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + f64.const 6.022586634778589e-103 i32.const 0 - i32.const 1696 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getUint64 - i64.const -657428103485373601 - i64.ne - if + call $~lib/dataview/DataView#setFloat64 + local.get $0 i32.const 0 - i32.const 1696 + call $~lib/dataview/DataView#getFloat64 + f64.const 6.022586634778589e-103 + f64.ne + if + i32.const 0 + i32.const 1696 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.eqz + if + i32.const 1360 + i32.const 1632 + i32.const 109 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1.5976661625240943e-18 - i32.const 1 - call $~lib/dataview/DataView#setFloat32 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 1.5976661625240943e-18 - f32.ne - if + i32.store8 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1976281973381696323584 - i32.const 0 - call $~lib/dataview/DataView#setFloat32 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const 1976281973381696323584 - f32.ne - if + call $~lib/dataview/DataView#getInt8 + i32.const 108 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const -13360 + i32.const 1 + call $~lib/dataview/DataView#setInt16 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const -1094252199637739024055454e124 - i32.const 1 - call $~lib/dataview/DataView#setFloat64 - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getFloat64 - f64.const -1094252199637739024055454e124 - f64.ne - if + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 52176 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 14689 i32.const 0 - i32.const 1696 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 6.022586634778589e-103 - i32.const 0 - call $~lib/dataview/DataView#setFloat64 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getFloat64 - f64.const 6.022586634778589e-103 - f64.ne - if + call $~lib/dataview/DataView#setInt16 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.eqz - if - i32.const 1360 - i32.const 1632 - i32.const 109 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 108 - i32.store8 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getInt8 - i32.const 108 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -13360 - i32.const 1 - call $~lib/dataview/DataView#setInt16 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 52176 - i32.ne - if + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 14689 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1204680201 + i32.const 1 + call $~lib/dataview/DataView#setInt32 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 14689 - i32.const 0 - call $~lib/dataview/DataView#setInt16 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 14689 - i32.ne - if + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1204680201 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 132 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 660673230 i32.const 0 - i32.const 1696 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1204680201 - i32.const 1 - call $~lib/dataview/DataView#setInt32 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1204680201 - i32.ne - if + call $~lib/dataview/DataView#setInt32 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 132 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 660673230 - i32.const 0 - call $~lib/dataview/DataView#setInt32 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const 660673230 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const -3290739641816099749 - i32.const 1 - call $~lib/dataview/DataView#setInt64 - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getInt64 - i64.const -3290739641816099749 - i64.ne - if + call $~lib/dataview/DataView#getInt32 + i32.const 660673230 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.const -3290739641816099749 + i32.const 1 + call $~lib/dataview/DataView#setInt64 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getInt64 + i64.const -3290739641816099749 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.const 8178932412950708047 i32.const 0 - i32.const 1696 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 8178932412950708047 - i32.const 0 - call $~lib/dataview/DataView#setInt64 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getInt64 - i64.const 8178932412950708047 - i64.ne - if + call $~lib/dataview/DataView#setInt64 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getInt64 + i64.const 8178932412950708047 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.eqz + if + i32.const 1360 + i32.const 1632 + i32.const 128 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 238 + i32.store8 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getUint8 + i32.const 238 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 144 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 58856 + i32.const 1 + call $~lib/dataview/DataView#setUint16 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 58856 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 60400 i32.const 0 - i32.const 1696 - i32.const 141 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.eqz - if - i32.const 1360 - i32.const 1632 - i32.const 128 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 238 - i32.store8 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getUint8 - i32.const 238 - i32.ne - if + call $~lib/dataview/DataView#setUint16 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 144 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 58856 - i32.const 1 - call $~lib/dataview/DataView#setUint16 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 58856 - i32.ne - if i32.const 0 - i32.const 1696 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 60400 - i32.const 0 - call $~lib/dataview/DataView#setUint16 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 60400 - i32.ne - if + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 60400 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const -846805744 + i32.const 1 + call $~lib/dataview/DataView#setUint32 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -846805744 - i32.const 1 - call $~lib/dataview/DataView#setUint32 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -846805744 - i32.ne - if + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -846805744 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const -1510791631 i32.const 0 - i32.const 1696 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1510791631 - i32.const 0 - call $~lib/dataview/DataView#setUint32 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -1510791631 - i32.ne - if + call $~lib/dataview/DataView#setUint32 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 156 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 2334704782995986958 - i32.const 1 - call $~lib/dataview/DataView#setUint64 - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getUint64 - i64.const 2334704782995986958 - i64.ne - if i32.const 0 - i32.const 1696 - i32.const 159 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const -7123186897289856329 - i32.const 0 - call $~lib/dataview/DataView#setUint64 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getUint64 - i64.const -7123186897289856329 - i64.ne - if + call $~lib/dataview/DataView#getUint32 + i32.const -1510791631 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 156 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.const 2334704782995986958 + i32.const 1 + call $~lib/dataview/DataView#setUint64 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getUint64 + i64.const 2334704782995986958 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.const -7123186897289856329 i32.const 0 - i32.const 1696 - i32.const 162 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - call $~lib/dataview/DataView#constructor - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if + call $~lib/dataview/DataView#setUint64 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 8 - i32.ne - if + call $~lib/dataview/DataView#getUint64 + i64.const -7123186897289856329 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 162 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + local.get $2 + local.get $0 i32.const 0 - i32.const 1696 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 18172 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + call $~lib/dataview/DataView#constructor + local.tee $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1696 + i32.const 165 + 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 1696 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 18172 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + 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|0 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + return 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 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 18192 + i32.const 18240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4114,11 +4318,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1788 + i32.lt_s + if + i32.const 18192 + i32.const 18240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index cadec315ca..5dfad23446 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (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_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $i32_i32_i32_i32_i32_i32_f64_=>_f64 (func (param i32 i32 i32 i32 i32 i32 f64) (result f64))) (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64))) @@ -41,15 +41,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -101,170 +92,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17908 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17908 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1168 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -552,12 +527,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -911,7 +886,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -974,7 +954,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1054,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17908 i32.ge_u if @@ -1064,19 +1049,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1093,11 +1078,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1107,10 +1095,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1177,44 +1167,96 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 4 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 4 + memory.size + local.tee $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl i32.const 65563 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1222,17 +1264,17 @@ unreachable end end + local.get $3 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1243,7 +1285,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1257,57 +1299,57 @@ call $~lib/builtins/abort unreachable end + local.get $3 local.get $0 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $1 i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 - local.get $3 + local.get $1 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $3 + local.get $0 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $0 - local.get $1 i32.load i32.const -4 i32.and @@ -1317,71 +1359,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 + local.get $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 8 i32.store offset=16 - local.get $0 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $0 i32.load @@ -1452,192 +1458,207 @@ unreachable ) (func $~start - call $start:std/date - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:std/date (local $0 i32) (local $1 i64) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1970 - i32.const 0 - i32.const 1 - i32.const 0 - i32.const 0 - i32.const 0 - f64.const 0 - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - i64.eqz - i32.eqz - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1970 - i32.const 0 - i32.const 1 - i32.const 0 - i32.const 0 - i32.const 0 - f64.const 0 - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - i64.eqz - i32.eqz - if + i32.store + i32.const 1970 i32.const 0 - i32.const 1056 - i32.const 2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2018 - i32.const 10 - i32.const 10 - i32.const 11 - i32.const 0 - i32.const 0 - f64.const 1 - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - global.set $std/date/creationTime - global.get $std/date/creationTime - i64.const 1541847600001 - i64.ne - if i32.const 0 - i32.const 1056 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/bindings/Date/now - i64.trunc_f64_s - global.get $std/date/creationTime - i64.le_s - if i32.const 0 - i32.const 1056 - i32.const 7 + i32.const 0 + f64.const 0 + call $~lib/bindings/Date/UTC + i64.trunc_f64_s + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1970 + i32.const 0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 17908 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1216 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1248 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $std/date/creationTime - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i64.const 0 - i64.store - local.get $0 - local.get $1 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $std/date/date - global.get $~lib/memory/__stack_pointer - global.get $std/date/date - local.tee $0 - i32.store - global.get $std/date/creationTime - local.get $0 - i64.load - i64.ne - if i32.const 0 - i32.const 1056 + i32.const 0 + i32.const 0 + f64.const 0 + call $~lib/bindings/Date/UTC + i64.trunc_f64_s + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2018 i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/date/date - local.tee $0 - i32.store - local.get $0 - global.get $std/date/creationTime - i64.const 1 - i64.add - i64.store - global.get $~lib/memory/__stack_pointer - global.get $std/date/date - local.tee $0 - i32.store - local.get $0 - i64.load - global.get $std/date/creationTime - i64.const 1 - i64.add - i64.ne - if + i32.const 10 + i32.const 11 i32.const 0 - i32.const 1056 - i32.const 12 + i32.const 0 + f64.const 1 + call $~lib/bindings/Date/UTC + i64.trunc_f64_s + global.set $std/date/creationTime + global.get $std/date/creationTime + i64.const 1541847600001 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/bindings/Date/now + i64.trunc_f64_s + global.get $std/date/creationTime + i64.le_s + if + i32.const 0 + i32.const 1056 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17908 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + 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 + global.get $std/date/creationTime + local.set $1 + 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 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i64.const 0 + i64.store + local.get $0 + local.get $1 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std/date/date + global.get $~lib/memory/__stack_pointer + global.get $std/date/date + local.tee $0 + i32.store + global.get $std/date/creationTime + local.get $0 + i64.load + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + global.get $std/date/date + local.tee $0 + i32.store + local.get $0 + global.get $std/date/creationTime + i64.const 1 + i64.add + local.tee $1 + i64.store + local.get $2 + local.get $0 + i32.store + local.get $1 + local.get $0 + i64.load + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 12 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat index e92a86fbfe..c405ed2e8f 100644 --- a/tests/compiler/std/hash.optimized.wat +++ b/tests/compiler/std/hash.optimized.wat @@ -200,13 +200,6 @@ end ) (func $~start - call $start:std/hash - ) - (func $start:std/hash - (local $0 f32) - (local $1 i32) - (local $2 f64) - (local $3 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 5fd8875b69..5761a442e5 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1,32 +1,22 @@ (module (type $i32_i32_=>_none (func (param i32 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 $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i64_=>_none (func (param i32 i64 i64))) (type $none_=>_i32 (func (result i32))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) - (type $i32_f32_f32_=>_none (func (param i32 f32 f32))) (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) - (type $i32_f64_f64_=>_none (func (param i32 f64 f64))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -66,15 +56,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18404)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -124,49 +105,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -191,7 +133,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -214,7 +156,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -224,15 +166,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -268,7 +215,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -575,12 +544,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -934,7 +903,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -997,7 +971,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1077,7 +1056,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18404 i32.ge_u if @@ -1087,19 +1066,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1116,11 +1095,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1112,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1154,28 +1138,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1272,270 +1256,71 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 + i32.sub + i32.const -4 + i32.and + local.tee $2 i32.add i32.const 28 i32.sub @@ -1631,6 +1416,10 @@ ) (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 @@ -1648,12 +1437,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1669,13 +1458,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1689,49 +1479,262 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) - (local $2 i32) - local.get $1 - i32.eqz + local.get $6 + i32.const 1073741820 + i32.ge_u if - return - end + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 30 + 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 + 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/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end local.get $0 i32.eqz if @@ -1759,8 +1762,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1772,7 +1773,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1783,24 +1784,13 @@ end end ) - (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store + (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) - (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) + i32.load local.get $0 + i32.load offset=4 local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) - (func $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 i32.const 24 i32.shl i32.const 24 @@ -1813,75 +1803,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load local.set $0 - loop $while-continue|0 - local.get $0 - if + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end if local.get $0 - return + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + i32.const 0 + local.set $0 end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find i32.const 0 i32.ne ) @@ -1897,11 +1874,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -1925,7 +1913,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 local.get $0 i32.load offset=16 i32.const 12 @@ -1936,37 +1924,67 @@ local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $7 i32.load8_s - local.tee $7 + local.tee $8 i32.store8 local.get $2 - local.get $8 + local.get $7 i32.load offset=4 i32.store offset=4 local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + 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 $7 + local.tee $8 i32.load i32.store offset=8 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -1974,22 +1992,28 @@ i32.add local.set $2 end - local.get $8 + local.get $7 i32.const 12 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/map/Map#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/map/Map#set:entries + 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 @@ -2003,12 +2027,80 @@ global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 + i32.load + local.get $0 + i32.load offset=4 local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 1616 @@ -2021,373 +2113,1124 @@ local.get $0 i32.load offset=4 ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 + i32.const 3 + i32.and + i32.const 1 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end - ) - (func $~lib/array/ensureSize (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 $1 - local.get $0 - i32.load offset=8 - local.tee $5 local.get $2 - i32.shr_u - i32.gt_u + i32.const 16 + i32.and if + local.get $0 local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end + i32.load8_u + i32.store8 local.get $0 - i32.load - local.tee $6 - local.set $3 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $1 - local.get $2 - i32.shl - local.tee $7 - local.tee $4 - local.get $6 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $2 - local.get $4 - i32.store offset=16 - local.get $3 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $4 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - local.get $4 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $4 - i32.gt_u - select - call $~lib/memory/memory.copy - end + i32.const 1 + i32.add + local.tee $0 local.get $1 - local.get $5 + i32.const 1 i32.add - local.get $7 - local.get $5 - i32.sub - call $~lib/memory/memory.fill + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - local.get $6 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - end + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $7 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 i32.const 1 i32.add - local.tee $3 - i32.const 0 - call $~lib/array/ensureSize + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 i32.const 1 i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $3 - i32.store offset=12 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add local.get $2 - i32.store - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/ensureSize (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=12 - i32.ge_u + i32.load offset=8 + local.tee $7 + 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 14 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $1 + local.get $2 + i32.shl + local.tee $8 + local.tee $4 + local.get $0 + i32.load + local.tee $9 + local.tee $1 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $4 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $4 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $5 + local.set $2 + local.get $4 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $6 + block $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $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 $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $3 + 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 + if + local.get $2 + local.tee $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $3 + 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 $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 $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 + end + end + local.get $5 + local.set $1 + end + local.get $1 + local.get $7 + i32.add + local.get $8 + local.get $7 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $9 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $8 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if i32.const 1248 i32.const 1728 @@ -2404,7 +3247,7 @@ i32.add i32.load ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2416,13 +3259,24 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 + 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 @@ -2437,78 +3291,110 @@ i32.const 3 i32.div_s local.tee $5 - i32.const 3 - i32.shl + i32.const 12 + 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.tee $7 local.get $0 i32.load offset=16 - i32.const 3 - i32.shl + i32.const 12 + i32.mul i32.add local.set $4 local.get $3 local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 - i32.load offset=4 + local.get $7 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 - i32.load8_s - local.tee $7 - i32.store8 + local.get $7 + i32.load + local.tee $8 + i32.store local.get $2 - local.get $8 - i32.load8_s offset=1 - i32.store8 offset=1 + local.get $7 + i32.load offset=4 + i32.store offset=4 local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + 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 $7 + local.tee $8 i32.load - i32.store offset=4 - local.get $7 + i32.store offset=8 + local.get $8 local.get $2 i32.store local.get $2 - i32.const 8 + i32.const 12 i32.add local.set $2 end - local.get $8 - i32.const 8 + local.get $7 + i32.const 12 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/map/Map#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/map/Map#set:entries + 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 @@ -2521,78 +3407,168 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/hash/HASH (param $0 i32) (result i32) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const -1028477379 i32.mul - i32.const 374761397 + i32.const 374761394 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 if - local.get $0 - return + local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $~lib/map/Map#clear (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 i32.const 0 + i32.store offset=20 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2600,1059 +3576,1062 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 12 - 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 12 - i32.mul - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 + block $folding-inner1 + 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 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 4 + 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 $4 + i32.const 0 + i32.store local.get $4 - local.get $8 - i32.ne - if - local.get $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $16 + i32.store + local.get $16 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store + local.get $16 + local.get $4 + call $~lib/rt/itcms/__link + local.get $16 + i32.const 3 + i32.store offset=4 + local.get $16 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=8 + local.get $16 + local.get $4 + call $~lib/rt/itcms/__link + local.get $16 + i32.const 4 + i32.store offset=12 + local.get $16 + i32.const 0 + i32.store offset=16 + local.get $16 + 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 $16 + i32.store + loop $for-loop|1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 100 + i32.lt_s if - local.get $2 - local.get $8 - i32.load - local.tee $7 - i32.store - local.get $2 - local.get $8 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH + local.get $16 local.get $1 - i32.and - i32.const 2 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $1 + local.get $1 + i32.const 24 i32.shl + i32.const 24 + i32.shr_s + i32.const 10 i32.add - local.tee $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 + call $~lib/map/Map#set + local.get $16 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 i32.add - local.set $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 end - end - local.get $0 - local.get $6 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 + local.get $16 i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $~lib/map/Map#clear (param $0 i32) - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - 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 - i32.store - loop $for-loop|1 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $1 + loop $for-loop|3 local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 i32.const 24 i32.shl i32.const 24 i32.shr_s - i32.const 10 - i32.add - i32.ne + i32.const 100 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $16 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $16 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|3 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $16 + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=16 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.get $5 - call $~lib/map/Map#set:buckets - local.get $2 - local.get $5 - i32.store offset=4 - local.get $2 - local.get $4 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - loop $for-loop|0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $12 + i32.const 4 + 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 $4 + i32.const 0 + i32.store + local.get $16 + i32.load offset=8 + local.set $13 + local.get $16 + i32.load offset=16 + local.set $3 local.get $4 - local.get $6 - i32.gt_s + 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 + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $14 + i32.store + local.get $14 + i32.const 0 + i32.store + local.get $14 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $14 + i32.const 0 + i32.store offset=4 + local.get $14 + i32.const 0 + i32.store offset=8 + local.get $14 + i32.const 0 + i32.store offset=12 + local.get $3 + i32.const 1073741820 + i32.gt_u if - local.get $8 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/memory/memory.fill + local.get $14 + local.get $2 + i32.store + local.get $14 + local.get $2 + call $~lib/rt/itcms/__link + local.get $14 + local.get $2 + i32.store offset=4 + local.get $14 + local.get $3 + i32.store offset=8 + local.get $14 + local.get $3 + 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 $14 + i32.store + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s if - local.get $2 + local.get $13 local.get $0 - local.get $5 - i32.load8_s - call $~lib/array/Array#__set + i32.const 12 + i32.mul + i32.add + local.tee $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $14 + local.get $1 + local.get $4 + i32.load8_s + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end local.get $0 i32.const 1 i32.add local.set $0 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 end - end - local.get $2 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/map/Map#values - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - 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 $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|4 - local.get $3 - local.get $2 - i32.load offset=12 + local.get $14 + local.get $1 + i32.const 0 + call $~lib/array/ensureSize + local.get $14 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + local.get $14 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $16 + call $~lib/map/Map#values + local.tee $7 + i32.store offset=8 + 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 2020 i32.lt_s - if - local.get $3 - local.get $2 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - i32.load offset=4 - i32.add - i32.load8_s - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $6 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $5 - local.get $6 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 - end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $4 i32.const 0 - i32.const 1568 - i32.const 36 + i32.store + local.get $4 + i32.const 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + local.get $3 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if + i32.store offset=4 + local.get $3 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=8 + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + local.get $3 + i32.const 4 + i32.store offset=12 + local.get $3 i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 + i32.store offset=16 local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#get - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|8 + 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 $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $9 + i32.store offset=16 + loop $for-loop|4 + local.get $15 + local.get $14 + i32.load offset=12 + i32.lt_s if + local.get $15 + local.get $14 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $14 + i32.load offset=4 + i32.add + i32.load8_s + local.set $13 + local.get $7 + local.get $15 + call $~lib/array/Array#__get + local.set $8 + local.get $16 + local.get $13 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|8 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - 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 $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 12 - 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 12 - 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=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $8 - i32.load8_u - local.tee $7 - i32.store8 + i32.store + local.get $13 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + local.tee $2 + local.set $6 + local.get $3 + i32.load local.get $2 - local.get $8 + local.get $3 i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH - local.get $1 i32.and i32.const 2 i32.shl i32.add - local.tee $7 i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $13 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $0 + local.get $13 + i32.store8 offset=1 + else + local.get $3 + i32.load offset=16 + local.get $3 + i32.load offset=12 + i32.eq + if + local.get $3 + i32.load offset=20 + local.get $3 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $3 + i32.load offset=4 + else + local.get $3 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $12 + 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 $12 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + 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 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=8 + local.tee $11 + local.get $3 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $2 + local.set $0 + loop $while-continue|02 + local.get $4 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $11 + i32.load8_s + local.tee $1 + i32.store8 + local.get $0 + local.get $11 + i32.load8_s offset=1 + i32.store8 offset=1 + local.get $0 + local.get $10 + local.get $12 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $11 + i32.const 8 + i32.add + local.set $11 + br $while-continue|02 + end + end + local.get $3 + local.get $10 + i32.store + local.get $3 + local.get $10 + call $~lib/rt/itcms/__link + local.get $3 + local.get $12 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + local.get $3 + local.get $2 + call $~lib/rt/itcms/__link + local.get $3 + local.get $5 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=8 + local.tee $12 + i32.store + local.get $3 + local.get $3 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $12 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $13 + i32.store8 + local.get $2 + local.get $13 + i32.store8 offset=1 + local.get $3 + local.get $3 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $3 + i32.load + local.get $6 + local.get $3 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=4 + local.get $4 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer + local.get $9 + local.get $8 + i32.const 20 + i32.sub + local.tee $4 + local.get $4 + call $~lib/map/Map#set + local.get $15 + i32.const 1 + i32.add + local.set $15 + br $for-loop|4 end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 end + local.get $3 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $15 + loop $for-loop|6 + local.get $15 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s + if + local.get $16 + local.get $15 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $15 + call $~lib/map/Map#get + local.get $15 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $15 + call $~lib/map/Map#delete + local.get $16 + local.get $15 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + i32.const 1 + i32.add + local.set $15 + br $for-loop|6 + end + end + local.get $16 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $15 + loop $for-loop|8 + local.get $15 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s + if + local.get $16 + local.get $15 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $15 + local.get $15 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $16 + local.get $15 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $15 + call $~lib/map/Map#delete + local.get $16 + local.get $15 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + i32.const 1 + i32.add + local.set $15 + br $for-loop|8 + end + end + local.get $16 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $16 + call $~lib/map/Map#clear + local.get $16 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return end - local.get $0 - local.get $6 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3664,11 +4643,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -3685,78 +4675,112 @@ i32.const 3 i32.div_s local.tee $5 - i32.const 3 - i32.shl + i32.const 12 + 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.tee $7 local.get $0 i32.load offset=16 - i32.const 3 - i32.shl + i32.const 12 + i32.mul i32.add local.set $4 local.get $3 local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 - i32.load offset=4 + local.get $7 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $7 i32.load8_u - local.tee $7 + local.tee $8 i32.store8 local.get $2 - local.get $8 - i32.load8_u offset=1 - i32.store8 offset=1 + local.get $7 + i32.load offset=4 + i32.store offset=4 local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + 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 $7 + local.tee $8 i32.load - i32.store offset=4 - local.get $7 + i32.store offset=8 + local.get $8 local.get $2 i32.store local.get $2 - i32.const 8 + i32.const 12 i32.add local.set $2 end - local.get $8 - i32.const 8 + local.get $7 + i32.const 12 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/map/Map#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/map/Map#set:entries + 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 @@ -3769,44 +4793,196 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + i32.load local.get $0 i32.load offset=4 - i32.const 1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul local.tee $2 - i32.const 1 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - i32.const 4 - i32.lt_u + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + i32.const 4 + i32.lt_u select i32.ge_u if (result i32) @@ -3839,1852 +5015,1888 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - 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 - i32.store - loop $for-loop|1 - local.get $2 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $16 + i64.const 0 + i64.store + local.get $16 + i64.const 0 + i64.store offset=8 + local.get $16 + i32.const 0 + i32.store offset=16 + local.get $16 + i32.const 4 + 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 $4 + i32.const 0 + i32.store + local.get $4 + i32.const 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $15 + i32.store + local.get $15 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store + local.get $15 + local.get $4 + call $~lib/rt/itcms/__link + local.get $15 + i32.const 3 + i32.store offset=4 + local.get $15 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=8 + local.get $15 + local.get $4 + call $~lib/rt/itcms/__link + local.get $15 + i32.const 4 + i32.store offset=12 + local.get $15 + i32.const 0 + i32.store offset=16 + local.get $15 + 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 $16 + local.get $15 + i32.store + loop $for-loop|1 local.get $1 - local.get $2 - local.get $2 i32.const 255 i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + local.get $1 + i32.const 255 + i32.and + local.tee $4 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|02 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 255 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 255 - i32.and + local.get $15 + i32.load offset=20 i32.const 100 - i32.lt_u + i32.ne if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|3 local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 i32.const 255 i32.and - i32.const 10 - i32.add - i32.ne + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 255 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=16 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.get $5 - call $~lib/map/Map#set:buckets - local.get $2 - local.get $5 - i32.store offset=4 - local.get $2 - local.get $4 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - loop $for-loop|0 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|05 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 255 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + local.get $1 + i32.const 255 + i32.and + local.tee $4 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|08 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|3 + end + end + local.get $15 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store + local.get $15 + i32.load offset=8 + local.set $3 + local.get $15 + i32.load offset=16 + local.set $13 local.get $4 - local.get $6 - i32.gt_s + 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 $16 + i64.const 0 + i64.store + local.get $16 + i32.const 16 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $14 + i32.store + local.get $14 + i32.const 0 + i32.store + local.get $14 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $14 + i32.const 0 + i32.store offset=4 + local.get $14 + i32.const 0 + i32.store offset=8 + local.get $14 + i32.const 0 + i32.store offset=12 + local.get $13 + i32.const 1073741820 + i32.gt_u if - local.get $8 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $16 + i32.store offset=4 + local.get $16 + local.get $13 + call $~lib/memory/memory.fill + local.get $14 + local.get $16 + i32.store + local.get $14 + local.get $16 + call $~lib/rt/itcms/__link + local.get $14 + local.get $16 + i32.store offset=4 + local.get $14 + local.get $13 + i32.store offset=8 + local.get $14 + local.get $13 + 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 $14 + i32.store + loop $for-loop|0 + local.get $5 + local.get $13 + i32.lt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $14 + local.get $1 + local.get $4 + i32.load8_u + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end local.get $5 - i32.load8_u - call $~lib/array/Array#__set - local.get $0 i32.const 1 i32.add - local.set $0 + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 end - end - local.get $2 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/map/Map#values - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - 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 $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|4 - local.get $3 - local.get $2 - i32.load offset=12 + local.get $14 + local.get $1 + i32.const 0 + call $~lib/array/ensureSize + local.get $14 + local.get $1 + 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 $14 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $15 + call $~lib/map/Map#values + local.tee $8 + i32.store offset=8 + 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 2020 i32.lt_s - if - local.get $3 - local.get $2 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - i32.load offset=4 - i32.add - i32.load8_u - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $6 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $5 - local.get $6 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 - end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1568 - i32.const 36 + i32.store + local.get $1 + i32.const 24 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $5 + local.get $1 + call $~lib/rt/itcms/__link + local.get $5 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if + i32.store offset=4 + local.get $5 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $5 + local.get $1 + call $~lib/rt/itcms/__link + local.get $5 + i32.const 4 + i32.store offset=12 + local.get $5 i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 - local.get $3 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#get - local.get $3 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if + i32.store offset=16 + local.get $5 i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|8 - local.get $3 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $10 + i32.store offset=16 + loop $for-loop|4 + local.get $2 + local.get $14 + i32.load offset=12 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|8 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - 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 $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 12 - 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 12 - 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=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $8 - i32.load16_s - local.tee $7 - i32.store16 local.get $2 + local.tee $3 + local.get $14 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $14 + i32.load offset=4 + i32.add + i32.load8_u + local.set $2 local.get $8 + local.get $3 + call $~lib/array/Array#__get + local.set $9 + local.get $15 + i32.load + local.get $15 i32.load offset=4 - i32.store offset=4 local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 local.get $1 + i32.const 16 + i32.shr_u + i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $7 i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 + local.set $16 + block $__inlined_func$~lib/map/Map#find11 + loop $while-continue|012 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find11 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|012 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $9 + i32.const 20 + i32.sub + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.set $2 - end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 - end - end - local.get $0 - local.get $6 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (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 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 3 - i32.shl - 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 3 - i32.shl - 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=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $8 - i32.load16_s - local.tee $7 - i32.store16 - local.get $2 - local.get $8 - i32.load16_s offset=2 - i32.store16 offset=2 - local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 local.get $1 + i32.const 16 + i32.shr_u + i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $7 i32.load - i32.store offset=4 - local.get $7 - local.get $2 + local.set $0 + block $__inlined_func$~lib/map/Map#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $4 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find14 + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store local.get $2 - i32.const 8 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.set $2 - end - local.get $8 - i32.const 8 - i32.add - local.set $8 - br $while-continue|0 - end - end - local.get $0 - local.get $6 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - 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 - i32.store - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $1 + local.set $7 + local.get $5 + i32.load + local.get $1 + local.get $5 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|017 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $4 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|017 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $0 + local.get $4 + i32.store8 offset=1 + else + local.get $5 + i32.load offset=16 + local.get $5 + i32.load offset=12 + i32.eq + if + local.get $5 + i32.load offset=20 + local.get $5 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $5 + i32.load offset=4 + else + local.get $5 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $16 + 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 $16 + i32.const 1 + i32.add + local.tee $1 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=4 + local.get $5 + i32.load offset=8 + local.tee $12 + local.get $5 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $2 + local.get $1 + local.set $0 + loop $while-continue|018 + local.get $2 + local.get $12 + i32.ne + if + local.get $12 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $12 + i32.load8_u + local.tee $13 + i32.store8 + local.get $0 + local.get $12 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $11 + local.get $16 + local.get $13 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $13 + local.get $13 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $13 + local.get $13 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $13 + local.get $13 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $13 + i32.load + i32.store offset=4 + local.get $13 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $12 + i32.const 8 + i32.add + local.set $12 + br $while-continue|018 + end + end + local.get $5 + local.get $11 + i32.store + local.get $5 + local.get $11 + call $~lib/rt/itcms/__link + local.get $5 + local.get $16 + i32.store offset=4 + local.get $5 + local.get $1 + i32.store offset=8 + local.get $5 + local.get $1 + call $~lib/rt/itcms/__link + local.get $5 + local.get $6 + i32.store offset=12 + local.get $5 + local.get $5 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load offset=8 + local.tee $16 + i32.store + local.get $5 + local.get $5 + i32.load offset=16 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=16 + local.get $16 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $1 + local.get $4 + i32.store8 + local.get $1 + local.get $4 + i32.store8 offset=1 + local.get $5 + local.get $5 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $1 + local.get $5 + i32.load + local.get $7 + local.get $5 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + local.get $9 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $3 + i32.const 1 + i32.add + local.set $2 + br $for-loop|4 + end + end + local.get $5 + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $1 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $10 + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $1 + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + loop $for-loop|6 local.get $2 - call $~lib/map/Map#has - i32.eqz + i32.const 255 + i32.and + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|021 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $2 + call $~lib/map/Map#get + local.get $2 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $2 + call $~lib/map/Map#delete + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|024 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|6 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.load offset=8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=16 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $7 - call $~lib/memory/memory.fill - local.get $2 - local.get $5 - call $~lib/map/Map#set:buckets - local.get $2 - local.get $5 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s + local.get $15 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $9 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + loop $for-loop|8 + local.get $2 + i32.const 255 i32.and - i32.eqz + i32.const 50 + i32.lt_u if + local.get $15 + i32.load + local.get $15 + i32.load offset=4 local.get $2 - local.get $0 - local.get $5 - i32.load16_s - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|027 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $2 + local.get $2 + i32.const 255 + i32.and + local.tee $1 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|030 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $2 + call $~lib/map/Map#delete + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find32 + loop $while-continue|033 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find32 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|033 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|8 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 end + local.get $15 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $15 + call $~lib/map/Map#clear + local.get $15 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return end - local.get $2 + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/map/Map#values - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 i32.const 13 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.const 0 - i32.store offset=20 + i32.ne + ) + (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 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add + i32.const 8 + i32.sub global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|4 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $3 - local.get $2 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $6 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $5 - local.get $6 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 - end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#get - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|8 - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|8 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 + i32.const 2020 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.tee $2 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -5708,7 +6920,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 local.get $0 i32.load offset=16 i32.const 12 @@ -5719,37 +6931,67 @@ local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 - i32.load16_u - local.tee $7 + local.get $7 + i32.load16_s + local.tee $8 i32.store16 local.get $2 - local.get $8 + local.get $7 i32.load offset=4 i32.store offset=4 local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + 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 $7 + local.tee $8 i32.load i32.store offset=8 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -5757,22 +6999,28 @@ i32.add local.set $2 end - local.get $8 + local.get $7 i32.const 12 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/map/Map#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/map/Map#set:entries + 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 @@ -5785,13 +7033,81 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 + i32.load + local.get $0 + i32.load offset=4 local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 1616 @@ -5804,139 +7120,129 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 3 - i32.shl - 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 3 - i32.shl - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 - i32.ne + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s if - local.get $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $8 - i32.load16_u - local.tee $7 - i32.store16 - local.get $2 - local.get $8 - i32.load16_u offset=2 - i32.store16 offset=2 - local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $7 - i32.load - i32.store offset=4 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $8 - i32.const 8 - i32.add - local.set $8 - br $while-continue|0 + i32.const 1248 + i32.const 1728 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 end local.get $0 - local.get $6 - call $~lib/map/Map#set:buckets - local.get $0 + i32.load offset=4 local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store16 ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) local.get $0 + i32.load + local.get $0 + i32.load offset=4 local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 + local.tee $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 i32.or i32.store offset=8 local.get $0 @@ -5977,10 +7283,10 @@ if local.get $0 local.get $2 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric + (func $std/map/testNumeric (local $0 i32) (local $1 i32) (local $2 i32) @@ -5992,1292 +7298,1065 @@ (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) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - 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 - i32.store - loop $for-loop|1 + block $folding-inner1 + 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 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 4 + 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 $3 i32.const 0 - i32.const 1568 + i32.store + local.get $3 + i32.const 24 i32.const 11 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $5 + local.get $3 + call $~lib/rt/itcms/__link + local.get $5 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 + i32.store offset=4 + local.get $5 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $5 + local.get $3 + call $~lib/rt/itcms/__link + local.get $5 + i32.const 4 + i32.store offset=12 + local.get $5 + i32.const 0 + i32.store offset=16 + local.get $5 + 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 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $5 + i32.store + loop $for-loop|1 local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $1 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $5 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.load offset=8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=16 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $7 - call $~lib/memory/memory.fill - local.get $2 - local.get $5 - call $~lib/map/Map#set:buckets - local.get $2 - local.get $5 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $9 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s if - local.get $2 - local.get $0 local.get $5 - i32.load16_u - call $~lib/array/Array#__set - local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $5 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 + br $for-loop|3 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 end - end - local.get $2 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/map/Map#values - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - 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 $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|4 + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $10 + i32.const 4 + 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 $3 + i32.const 0 + i32.store + local.get $5 + i32.load offset=8 + local.set $9 + local.get $5 + i32.load offset=16 + local.set $8 local.get $3 - local.get $2 - i32.load offset=12 + 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 + i32.const 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + i32.const 0 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $8 + i32.const 536870910 + i32.gt_u if - local.get $3 - local.get $2 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $6 - local.get $1 + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $2 + call $~lib/memory/memory.fill + local.get $7 + local.get $4 + i32.store + local.get $7 + local.get $4 + call $~lib/rt/itcms/__link + local.get $7 + local.get $4 + i32.store offset=4 + local.get $7 + local.get $2 + i32.store offset=8 + local.get $7 + local.get $8 + 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 + i32.store + loop $for-loop|0 local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz + local.get $8 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $9 + local.get $0 + i32.const 12 + i32.mul + i32.add + local.tee $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $7 + local.get $1 + local.get $3 + i32.load16_s + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $4 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $5 - local.get $6 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if + local.get $7 + local.get $1 + i32.const 1 + call $~lib/array/ensureSize + local.get $7 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/map/Map#values + local.tee $14 + i32.store offset=8 + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 36 + i32.store + local.get $3 + i32.const 24 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $4 + local.get $3 + call $~lib/rt/itcms/__link + local.get $4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 - local.get $3 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#get - local.get $3 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|8 + i32.store offset=4 + local.get $4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $4 local.get $3 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|8 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if + call $~lib/rt/itcms/__link + local.get $4 + i32.const 4 + i32.store offset=12 + local.get $4 i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if + i32.store offset=16 + local.get $4 i32.const 0 - i32.const 1568 - i32.const 60 - 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 $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul + i32.store offset=20 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $1 - i32.store - loop $for-loop|0 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $12 + i32.store offset=16 + loop $for-loop|4 + local.get $6 + local.get $7 + i32.load offset=12 + i32.lt_s if + local.get $6 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.load offset=4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $9 + local.get $14 + local.get $6 + call $~lib/array/Array#__get + local.set $13 + local.get $5 + local.get $9 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $13 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 + i32.store + local.get $9 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.load offset=8 - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=16 - local.tee $7 - call $~lib/array/Array#constructor - local.tee $2 - i32.store - loop $for-loop|01 - local.get $4 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $0 - local.get $8 + i32.shr_u + i32.xor + local.tee $2 + local.set $15 + local.get $4 i32.load - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + local.get $2 + local.get $4 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add + i32.load local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $9 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $0 + local.get $9 + i32.store16 offset=2 + else + local.get $4 + i32.load offset=16 + local.get $4 + i32.load offset=12 + i32.eq + if + local.get $4 + i32.load offset=20 + local.get $4 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $4 + i32.load offset=4 + else + local.get $4 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $10 + 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 $10 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $16 + i32.const 3 + i32.shl + 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 3 + i32.shl + i32.add + local.set $1 + local.get $2 + local.set $0 + loop $while-continue|02 + local.get $1 + local.get $3 + i32.ne + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $3 + i32.load16_s + local.tee $8 + i32.store16 + local.get $0 + local.get $3 + i32.load16_s offset=2 + i32.store16 offset=2 + local.get $0 + local.get $11 + local.get $10 + local.get $8 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + 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=4 + local.get $8 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $3 + i32.const 8 + i32.add + local.set $3 + br $while-continue|02 + end + end + local.get $4 + local.get $11 + i32.store + local.get $4 + local.get $11 + call $~lib/rt/itcms/__link + local.get $4 + local.get $10 + 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 $16 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=8 + local.tee $10 + i32.store + local.get $4 + local.get $4 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $10 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $9 + i32.store16 + local.get $2 + local.get $9 + i32.store16 offset=2 + local.get $4 + local.get $4 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $4 + i32.load + local.get $15 + local.get $4 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store offset=4 + local.get $3 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + local.get $13 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|4 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|01 - end - end - local.get $2 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/map/Map#values - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|2 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $3 - call $~lib/array/Array#__get - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $6 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $5 - local.get $6 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 50 - i32.lt_s + local.get $4 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#get - local.get $3 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|4 - local.get $3 - i32.const 50 - i32.lt_s + local.get $12 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if i32.const 0 - i32.const 1568 - i32.const 60 - 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 $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq + local.set $6 + loop $for-loop|6 + local.get $6 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s + if + local.get $5 + local.get $6 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $6 + call $~lib/map/Map#get + local.get $6 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $6 + call $~lib/map/Map#delete + local.get $5 + local.get $6 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|6 end + end + local.get $5 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $6 + loop $for-loop|8 + local.get $6 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s if - local.get $0 - return + local.get $5 + local.get $6 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $6 + local.get $6 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $5 + local.get $6 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $6 + call $~lib/map/Map#delete + local.get $5 + local.get $6 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|8 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + local.get $5 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + call $~lib/map/Map#clear + local.get $5 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7289,11 +8368,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -7317,7 +8407,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 local.get $0 i32.load offset=16 i32.const 12 @@ -7328,37 +8418,65 @@ local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 - i32.load - local.tee $7 - i32.store + local.get $7 + i32.load16_u + local.tee $8 + i32.store16 local.get $2 - local.get $8 + local.get $7 i32.load offset=4 i32.store offset=4 local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + 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 $7 + local.tee $8 i32.load i32.store offset=8 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -7366,22 +8484,28 @@ i32.add local.set $2 end - local.get $8 + local.get $7 i32.const 12 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/map/Map#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/map/Map#set:entries + 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 @@ -7394,150 +8518,166 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end + i32.load local.get $0 i32.load offset=4 - ) - (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 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 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 12 + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl 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=8 - i32.const 1 - i32.and - i32.eqz + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 if - local.get $2 - local.get $8 - i32.load - local.tee $7 - i32.store - local.get $2 - local.get $8 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH - local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.const 2 - i32.shl - i32.add - local.tee $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find local.get $2 - i32.const 12 - i32.add - local.set $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 end + i32.const 0 + local.set $0 end local.get $0 - local.get $6 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - local.get $0 - local.get $5 - i32.store offset=12 - local.get $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end 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 + i32.load offset=4 ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + local.get $0 + i32.load local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 i32.eqz if return @@ -7586,10 +8726,10 @@ if local.get $0 local.get $2 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric + (func $std/map/testNumeric (local $0 i32) (local $1 i32) (local $2 i32) @@ -7601,659 +8741,1879 @@ (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) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 17 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - 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 - i32.store - loop $for-loop|0 - local.get $2 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $16 + i64.const 0 + i64.store + local.get $16 + i64.const 0 + i64.store offset=8 + local.get $16 + i32.const 0 + i32.store offset=16 + local.get $16 + i32.const 4 + 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 $4 + i32.const 0 + i32.store + local.get $4 + i32.const 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $15 + i32.store + local.get $15 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store + local.get $15 + local.get $4 + call $~lib/rt/itcms/__link + local.get $15 + i32.const 3 + i32.store offset=4 + local.get $15 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=8 + local.get $15 + local.get $4 + call $~lib/rt/itcms/__link + local.get $15 + i32.const 4 + i32.store offset=12 + local.get $15 + i32.const 0 + i32.store offset=16 + local.get $15 + 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 $16 + local.get $15 + i32.store + loop $for-loop|1 local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 10 - i32.add - i32.ne + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $4 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|02 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 + local.get $15 + i32.load offset=20 i32.const 100 - i32.lt_u + i32.ne if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|3 local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|05 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $4 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|08 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|3 end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 20 - i32.add - i32.ne + end + local.get $15 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 0 + i32.store + local.get $15 + i32.load offset=8 + local.set $3 + local.get $15 + i32.load offset=16 + local.set $12 + local.get $4 + 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 $16 + i64.const 0 + i64.store + local.get $16 + i32.const 16 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $14 + i32.store + local.get $14 + i32.const 0 + i32.store + local.get $14 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $14 + i32.const 0 + i32.store offset=4 + local.get $14 + i32.const 0 + i32.store offset=8 + local.get $14 + i32.const 0 + i32.store offset=12 + local.get $12 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.const 1 + i32.shl + local.tee $16 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $13 + i32.store offset=4 + local.get $13 + local.get $16 + call $~lib/memory/memory.fill + local.get $14 + local.get $13 + i32.store + local.get $14 + local.get $13 + call $~lib/rt/itcms/__link + local.get $14 + local.get $13 + i32.store offset=4 + local.get $14 + local.get $16 + i32.store offset=8 + local.get $14 + local.get $12 + 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 $14 + i32.store + loop $for-loop|0 + local.get $5 + local.get $12 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $14 + local.get $1 + local.get $4 + i32.load16_u + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if + local.get $14 + local.get $1 + i32.const 1 + call $~lib/array/ensureSize + local.get $14 + local.get $1 + 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 $14 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $15 + call $~lib/map/Map#values + local.tee $7 + i32.store offset=8 + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1568 - i32.const 21 + i32.store + local.get $1 + i32.const 24 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $5 + local.get $1 + call $~lib/rt/itcms/__link + local.get $5 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.load offset=8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=16 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 18 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $7 - call $~lib/memory/memory.fill - local.get $2 - local.get $5 - call $~lib/map/Map#set:buckets - local.get $2 - local.get $5 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - loop $for-loop|01 + i32.store offset=4 + local.get $5 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $5 + local.get $1 + call $~lib/rt/itcms/__link + local.get $5 + i32.const 4 + i32.store offset=12 + local.get $5 + i32.const 0 + i32.store offset=16 + local.get $5 + 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 $4 - local.get $6 - i32.gt_s - if - local.get $9 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $9 + i32.store offset=16 + loop $for-loop|4 + local.get $2 + local.get $14 + i32.load offset=12 + i32.lt_s if local.get $2 + local.tee $3 + local.get $14 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $14 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $2 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + local.set $8 + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find11 + loop $while-continue|012 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find11 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|012 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $8 + i32.const 20 + i32.sub + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $4 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find14 + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $1 + local.set $6 local.get $5 i32.load - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + local.get $1 + local.get $5 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add + i32.load local.set $0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|01 - end - end - local.get $2 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/map/Map#values - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 19 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - 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 $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|2 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s + block $__inlined_func$~lib/map/Map#find + loop $while-continue|017 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $4 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|017 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $0 + local.get $4 + i32.store16 offset=2 + else + local.get $5 + i32.load offset=16 + local.get $5 + i32.load offset=12 + i32.eq + if + local.get $5 + i32.load offset=20 + local.get $5 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $5 + i32.load offset=4 + else + local.get $5 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $16 + 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 $16 + i32.const 1 + i32.add + local.tee $1 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $2 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=4 + local.get $5 + i32.load offset=8 + local.tee $11 + local.get $5 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $12 + local.get $1 + local.set $0 + loop $while-continue|018 + local.get $11 + local.get $12 + i32.ne + if + local.get $11 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $11 + i32.load16_u + local.tee $13 + i32.store16 + local.get $0 + local.get $11 + i32.load16_u offset=2 + i32.store16 offset=2 + local.get $0 + local.get $10 + local.get $16 + local.get $13 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $13 + local.get $13 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $13 + local.get $13 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $13 + local.get $13 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $13 + i32.load + i32.store offset=4 + local.get $13 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $11 + i32.const 8 + i32.add + local.set $11 + br $while-continue|018 + end + end + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + call $~lib/rt/itcms/__link + local.get $5 + local.get $16 + i32.store offset=4 + local.get $5 + local.get $1 + i32.store offset=8 + local.get $5 + local.get $1 + call $~lib/rt/itcms/__link + local.get $5 + local.get $2 + i32.store offset=12 + local.get $5 + local.get $5 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load offset=8 + local.tee $16 + i32.store + local.get $5 + local.get $5 + i32.load offset=16 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=16 + local.get $16 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $1 + local.get $4 + i32.store16 + local.get $1 + local.get $4 + i32.store16 offset=2 + local.get $5 + local.get $5 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $1 + local.get $5 + i32.load + local.get $6 + local.get $5 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + local.get $8 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $3 + i32.const 1 + i32.add + local.set $2 + br $for-loop|4 + end + end + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $3 + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + loop $for-loop|6 local.get $2 - i32.load offset=12 - i32.ge_u + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|021 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $2 + call $~lib/map/Map#get + local.get $2 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $2 + call $~lib/map/Map#delete + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|024 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|6 end + end + local.get $15 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + loop $for-loop|8 local.get $2 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $6 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|027 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $2 + local.get $2 + i32.const 65535 + i32.and + local.tee $1 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|030 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $15 + local.get $2 + call $~lib/map/Map#delete + local.get $15 + i32.load + local.get $15 + i32.load offset=4 + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $16 + block $__inlined_func$~lib/map/Map#find32 + loop $while-continue|033 + local.get $16 + if + local.get $16 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find32 + local.get $1 + i32.const -2 + i32.and + local.set $16 + br $while-continue|033 + end + end + i32.const 0 + local.set $16 + end + local.get $16 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|8 end - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz + end + local.get $15 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $15 + call $~lib/map/Map#clear + local.get $15 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return + end + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $4 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $5 - local.get $6 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#get - local.get $3 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|4 - local.get $3 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - 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 + local.get $0 + i32.load offset=4 ) - (func $~lib/util/hash/HASH (param $0 i64) (result i32) - (local $1 i32) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul + i32.load local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 + i32.load offset=4 + local.get $1 + local.tee $2 i32.const -1028477379 i32.mul + i32.const 374761397 i32.add i32.const 17 i32.rotl @@ -8278,1165 +10638,1342 @@ i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 if - local.get $0 - return + local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + return end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) - local.get $0 local.get $1 local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (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.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 4 - i32.shl - 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 4 - i32.shl - 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=12 - i32.const 1 - i32.and - i32.eqz + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + call $~lib/map/Map#constructor + local.tee $2 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s if local.get $2 - local.get $9 - i64.load - local.tee $5 - i64.store - local.get $2 - local.get $9 - i32.load offset=8 - i32.store offset=8 + i32.load local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $4 i32.load - i32.store offset=12 - local.get $4 + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.store + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add - local.set $2 + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|02 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $9 - i32.const 16 - i32.add - local.set $9 - br $while-continue|0 end - end - local.get $0 - local.get $8 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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#get (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne if - i32.const 1248 - i32.const 1728 - i32.const 108 - i32.const 22 + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - call $~lib/array/ensureSize - 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/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s if local.get $2 - local.get $9 - i64.load - local.tee $5 - i64.store - local.get $2 - local.get $9 - i64.load offset=8 - i64.store offset=8 + i32.load local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $4 i32.load - i32.store offset=16 - local.get $4 + local.set $1 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|05 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.store + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.const 24 + local.get $0 + local.get $0 + i32.const 20 i32.add - local.set $2 + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|08 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + 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 $9 - i32.const 24 - i32.add - local.set $9 - br $while-continue|0 end - end - local.get $0 - local.get $8 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 + local.get $2 i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $7 i32.const 4 - i32.div_s + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s - else + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $~lib/map/Map#clear (param $0 i32) - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 20 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 3 - i32.store offset=4 - local.get $2 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $2 - i32.const 4 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - 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 $2 - i32.store - loop $for-loop|0 + i32.store + local.get $2 + i32.load offset=8 + local.set $5 local.get $1 - i64.const 100 - i64.lt_s - if - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne + local.get $2 + i32.load offset=16 + local.tee $8 + call $~lib/array/Array#constructor + local.tee $1 + i32.store + loop $for-loop|01 + local.get $3 + local.get $8 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $6 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|01 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|0 end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|1 local.get $1 - i64.const 100 - i64.lt_s - if - local.get $2 + local.get $0 + i32.const 2 + call $~lib/array/ensureSize + local.get $1 + 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 $7 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/map/Map#values + local.tee $9 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $5 + i32.store offset=16 + loop $for-loop|2 + local.get $4 local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.load offset=12 + i32.lt_s if - i32.const 0 - i32.const 1568 + local.get $1 + local.get $4 + call $~lib/array/Array#__get + local.set $0 + local.get $9 + local.get $4 + call $~lib/array/Array#__get + local.set $8 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 21 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 134217727 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $5 - call $~lib/map/Map#set:buckets - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $8 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store - loop $for-loop|01 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $10 - local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $5 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $6 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $3 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find10 + local.get $6 + i32.const -2 + i32.and + local.set $3 + br $while-continue|011 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $8 + i32.const 20 + i32.sub + local.tee $6 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $10 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $3 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find13 + local.get $10 + i32.const -2 + i32.and + local.set $3 + br $while-continue|014 + end + end + i32.const 0 + local.set $3 + end local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 local.get $0 + local.get $0 + call $~lib/map/Map#set local.get $5 - i64.load - call $~lib/array/Array#__set + local.get $8 + i32.const 20 + i32.sub + local.tee $0 local.get $0 + call $~lib/map/Map#set + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 + br $for-loop|2 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|01 end - end - local.get $3 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/map/Map#values - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - 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 $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|2 local.get $7 - local.get $3 - i32.load offset=12 - i32.lt_s + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $7 - local.get $3 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.get $7 + i32.const 0 + i32.const 1568 + i32.const 36 i32.const 3 - i32.shl - i32.add - i64.load - local.set $1 - local.get $0 - local.get $7 - call $~lib/array/Array#__get - local.set $6 - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - i32.const 20 - i32.sub - i64.extend_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - local.get $5 - local.get $6 - i32.const 20 - i32.sub - local.tee $6 - local.get $6 - call $~lib/map/Map#set - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|2 + call $~lib/builtins/abort + unreachable end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_s + local.get $5 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#delete - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_s - if - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#delete - local.get $2 - local.get $1 - call $~lib/map/Map#has + local.set $4 + loop $for-loop|3 + local.get $4 + i32.const 50 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find16 + loop $while-continue|017 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $4 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find16 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|017 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $4 + call $~lib/map/Map#get + local.get $4 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $4 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find19 + loop $while-continue|020 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $4 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find19 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|020 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|3 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/map/Map#clear - local.get $2 - i32.load offset=20 - if + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1568 - i32.const 60 - 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 $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end + local.set $4 + loop $for-loop|4 + local.get $4 + i32.const 50 + i32.lt_s if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - return + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find22 + loop $while-continue|023 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $4 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find22 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|023 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $4 + local.get $4 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find25 + loop $while-continue|026 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $4 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find25 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|026 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $4 + call $~lib/map/Map#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $4 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find28 + loop $while-continue|029 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $4 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find28 + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|029 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|4 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/map/Map#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (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 - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -9444,7 +11981,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -9452,81 +11989,113 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 - i32.const 4 - i32.shl + local.tee $5 + i32.const 12 + 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.tee $7 local.get $0 i32.load offset=16 - i32.const 4 - i32.shl + i32.const 12 + i32.mul i32.add - local.set $6 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $9 + local.get $4 + local.get $7 i32.ne if - local.get $9 - i32.load offset=12 + local.get $7 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $9 - i64.load - local.tee $5 - i64.store + local.get $7 + i32.load + local.tee $8 + i32.store local.get $2 - local.get $9 - i32.load offset=8 - i32.store offset=8 + local.get $7 + i32.load offset=4 + i32.store offset=4 local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH + local.get $6 local.get $1 - i32.and + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + 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 $4 + local.tee $8 i32.load - i32.store offset=12 - local.get $4 + i32.store offset=8 + local.get $8 local.get $2 i32.store local.get $2 - i32.const 16 + i32.const 12 i32.add local.set $2 end - local.get $9 - i32.const 16 + local.get $7 + i32.const 12 i32.add - local.set $9 + local.set $7 br $while-continue|0 end end local.get $0 - local.get $8 - call $~lib/map/Map#set:buckets + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/map/Map#set:entries + i32.store offset=8 local.get $0 - local.get $7 + local.get $3 + call $~lib/rt/itcms/__link + local.get $0 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -9537,13 +12106,75 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 + i32.load + local.get $0 + i32.load offset=4 local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 i32.eqz if i32.const 1616 @@ -9554,145 +12185,89 @@ unreachable end local.get $0 - i32.load offset=8 + i32.load offset=4 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.get $0 + i32.load offset=4 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.const -1028477379 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.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl 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 + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 if - local.get $2 - local.get $9 - i64.load - local.tee $5 - i64.store - local.get $2 - local.get $9 - i64.load offset=8 - i64.store offset=8 - local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=16 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 24 - i32.add - local.set $2 + if (result i32) + i32.const 0 + else + local.get $2 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 end - local.get $9 - i32.const 24 - i32.add - local.set $9 - br $while-continue|0 end + i32.const 0 + local.set $1 end - local.get $0 - local.get $8 - call $~lib/map/Map#set:buckets - local.get $0 local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -9703,14 +12278,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 4 i32.lt_u select @@ -9730,13 +12305,13 @@ end if local.get $0 - local.get $3 - call $~lib/map/Map#rehash + local.get $2 + call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric + (func $std/map/testNumeric (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9747,1741 +12322,1721 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 23 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 3 - i32.store offset=4 - local.get $2 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $2 - i32.const 4 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - 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 $2 - i32.store - loop $for-loop|0 - local.get $1 - i64.const 100 - i64.lt_u - if - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i64.const 0 + i64.store offset=8 + local.get $4 i32.const 0 - i32.const 1568 - i32.const 11 + i32.store offset=16 + local.get $4 + i32.const 4 + 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 $16 + i32.const 0 + i32.store + local.get $16 + i32.const 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $14 + i32.store + local.get $14 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $16 + i32.store + local.get $14 + local.get $16 + call $~lib/rt/itcms/__link + local.get $14 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i64.const 100 - i64.lt_u - if - local.get $2 + i32.store offset=4 + local.get $14 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $16 + i32.store offset=8 + local.get $14 + local.get $16 + call $~lib/rt/itcms/__link + local.get $14 + i32.const 4 + i32.store offset=12 + local.get $14 + i32.const 0 + i32.store offset=16 + local.get $14 + 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 $4 + local.get $14 + i32.store + loop $for-loop|0 local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $16 + local.get $16 i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $16 + local.get $16 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $16 + local.get $16 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 24 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 134217727 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $5 - call $~lib/map/Map#set:buckets - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $8 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store - loop $for-loop|01 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $10 - local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $5 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $0 - local.get $5 - i64.load - call $~lib/array/Array#__set - local.get $0 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $13 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $13 + if + local.get $13 + i32.load offset=8 + local.tee $16 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $13 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $16 + i32.const -2 + i32.and + local.set $13 + br $while-continue|0 + end + end + i32.const 0 + local.set $13 + end + local.get $13 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + local.get $1 + local.get $1 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $16 + local.get $16 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $16 + local.get $16 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $16 + local.get $16 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $13 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $13 + if + local.get $13 + i32.load offset=8 + local.tee $16 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $13 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $16 + i32.const -2 + i32.and + local.set $13 + br $while-continue|02 + end + end + i32.const 0 + local.set $13 + end + local.get $13 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|01 end - end - local.get $3 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/map/Map#values - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 25 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - local.get $4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $4 - i32.const 3 - i32.store offset=4 - local.get $4 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $4 - i32.const 4 - i32.store offset=12 - local.get $4 - i32.const 0 - i32.store offset=16 - 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 $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|2 - local.get $7 - local.get $3 - i32.load offset=12 - i32.lt_s + local.get $14 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $7 - local.get $3 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.get $7 + i32.const 0 + i32.const 1568 + i32.const 11 i32.const 3 - i32.shl - i32.add - i64.load - local.set $1 - local.get $0 - local.get $7 - call $~lib/array/Array#__get - local.set $6 - local.get $2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - i32.const 20 - i32.sub - i64.extend_i32_s - call $~lib/map/Map#has - i32.eqz + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - local.get $5 - local.get $6 - i32.const 20 - i32.sub - local.tee $6 - local.get $6 - call $~lib/map/Map#set - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|2 + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $16 + local.get $16 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $16 + local.get $16 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $16 + local.get $16 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $13 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $13 + if + local.get $13 + i32.load offset=8 + local.tee $16 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $13 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $16 + i32.const -2 + i32.and + local.set $13 + br $while-continue|05 + end + end + i32.const 0 + local.set $13 + end + local.get $13 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + local.get $1 + local.get $1 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $16 + local.get $16 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $16 + local.get $16 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $16 + local.get $16 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $13 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $13 + if + local.get $13 + i32.load offset=8 + local.tee $16 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $13 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $16 + i32.const -2 + i32.and + local.set $13 + br $while-continue|08 + end + end + i32.const 0 + local.set $13 + end + local.get $13 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $14 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 4 + 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 $16 i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_u + i32.store + local.get $14 + i32.load offset=8 + local.set $13 + local.get $14 + i32.load offset=16 + local.set $11 + local.get $16 + 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 $4 + i64.const 0 + i64.store + local.get $4 + i32.const 16 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $12 + i32.store + local.get $12 + i32.const 0 + i32.store + local.get $12 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $12 + i32.const 0 + i32.store offset=4 + local.get $12 + i32.const 0 + i32.store offset=8 + local.get $12 + i32.const 0 + i32.store offset=12 + local.get $11 + i32.const 268435455 + i32.gt_u if - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#delete - local.get $2 - local.get $1 - call $~lib/map/Map#has + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.const 2 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $15 + i32.store offset=4 + local.get $15 + local.get $4 + call $~lib/memory/memory.fill + local.get $12 + local.get $15 + i32.store + local.get $12 + local.get $15 + call $~lib/rt/itcms/__link + local.get $12 + local.get $15 + i32.store offset=4 + local.get $12 + local.get $4 + i32.store offset=8 + local.get $12 + local.get $11 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + local.get $12 + i32.store + loop $for-loop|01 + local.get $0 + local.get $11 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $13 + local.get $0 + i32.const 12 + i32.mul + i32.add + local.tee $16 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $12 + local.get $1 + local.get $16 + i32.load + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|01 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if + local.get $12 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $12 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $12 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $14 + call $~lib/map/Map#values + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.tee $16 + i32.const 4 + 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 i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|4 + i32.store local.get $1 - i64.const 50 - i64.lt_u - if - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#delete - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 - end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 + i32.const 24 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $15 + i32.store + local.get $15 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $15 + local.get $1 + call $~lib/rt/itcms/__link + local.get $15 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/map/Map#clear - local.get $2 - i32.load offset=20 - if + i32.store offset=4 + local.get $15 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $15 + local.get $1 + call $~lib/rt/itcms/__link + local.get $15 + i32.const 4 + i32.store offset=12 + local.get $15 i32.const 0 - i32.const 1568 - i32.const 60 - 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 $~lib/util/hash/HASH (param $0 f32) (result i32) - (local $1 i32) - local.get $0 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f32.load - f32.eq - end - if - local.get $0 - return - end + i32.store offset=16 + local.get $15 + 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 $16 + local.get $15 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $10 + i32.store offset=16 + loop $for-loop|2 local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 12 - 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 12 - 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=8 - i32.const 1 - i32.and - i32.eqz + local.get $12 + i32.load offset=12 + i32.lt_s if local.get $2 - local.get $9 - f32.load - local.tee $5 - f32.store - local.get $2 - local.get $9 + local.tee $3 + local.get $12 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $12 i32.load offset=4 - i32.store offset=4 - local.get $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 local.get $8 - local.get $5 - call $~lib/util/hash/HASH + local.get $3 + call $~lib/array/Array#__get + local.set $9 + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $4 i32.load - i32.store offset=8 + local.set $4 + block $__inlined_func$~lib/map/Map#find11 + loop $while-continue|012 + local.get $4 + if + local.get $4 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $4 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find11 + local.get $1 + i32.const -2 + i32.and + local.set $4 + br $while-continue|012 + end + end + i32.const 0 + local.set $4 + end local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $9 - i32.const 12 - i32.add - local.set $9 - br $while-continue|0 - end - end - local.get $0 - local.get $8 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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#get (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 12 - 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 12 - 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=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $9 - f32.load - local.tee $5 - f32.store - local.get $2 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + i32.load + local.get $14 + i32.load offset=4 local.get $9 - f32.load offset=4 - f32.store offset=4 - local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH + i32.const 20 + i32.sub + local.tee $16 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $4 i32.load - i32.store offset=8 - local.get $4 - local.get $2 + local.set $13 + block $__inlined_func$~lib/map/Map#find14 + loop $while-continue|015 + local.get $13 + if + local.get $13 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $16 + local.get $13 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find14 + local.get $1 + i32.const -2 + i32.and + local.set $13 + br $while-continue|015 + end + end + i32.const 0 + local.set $13 + end + local.get $13 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + local.get $15 + i32.load local.get $2 - i32.const 12 + local.tee $4 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $7 + local.get $15 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $13 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $4 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find17 + local.get $13 + i32.const -2 + i32.and + local.set $1 + br $while-continue|018 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + local.get $1 + local.get $4 + i32.store offset=4 + else + local.get $15 + i32.load offset=16 + local.get $15 + i32.load offset=12 + i32.eq + if + local.get $15 + i32.load offset=20 + local.get $15 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $15 + i32.load offset=4 + else + local.get $15 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $13 + 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 $13 + i32.const 1 + i32.add + local.tee $1 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $16 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=4 + local.get $15 + i32.load offset=8 + local.tee $2 + local.get $15 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $1 + local.set $0 + loop $while-continue|019 + local.get $2 + local.get $5 + i32.ne + if + local.get $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $2 + i32.load + local.tee $11 + i32.store + local.get $0 + local.get $2 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $16 + local.get $13 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=8 + local.get $11 + local.get $0 + i32.store + local.get $0 + i32.const 12 + i32.add + local.set $0 + end + local.get $2 + i32.const 12 + i32.add + local.set $2 + br $while-continue|019 + end + end + local.get $15 + local.get $16 + i32.store + local.get $15 + local.get $16 + call $~lib/rt/itcms/__link + local.get $15 + local.get $13 + i32.store offset=4 + local.get $15 + local.get $1 + i32.store offset=8 + local.get $15 + local.get $1 + call $~lib/rt/itcms/__link + local.get $15 + local.get $6 + i32.store offset=12 + local.get $15 + local.get $15 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.load offset=8 + local.tee $13 + i32.store + local.get $15 + local.get $15 + i32.load offset=16 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=16 + local.get $13 + local.get $1 + i32.const 12 + i32.mul + i32.add + local.tee $1 + local.get $4 + i32.store + local.get $1 + local.get $4 + i32.store offset=4 + local.get $15 + local.get $15 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $1 + local.get $15 + i32.load + local.get $7 + local.get $15 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $2 + i32.load + i32.store offset=8 + local.get $2 + local.get $1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + local.get $9 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $3 + i32.const 1 i32.add local.set $2 + br $for-loop|2 end - local.get $9 - i32.const 12 - i32.add - local.set $9 - br $while-continue|0 end - end - local.get $0 - local.get $8 - call $~lib/map/Map#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - 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 f32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 + local.get $15 i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 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) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 26 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 3 - i32.store offset=4 - local.get $2 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $2 - i32.const 4 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - 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 $2 - i32.store - loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt + i32.const 100 + i32.ne if - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.trunc_f32_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f32_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - f32.const 100 - f32.lt + local.get $10 + i32.load offset=20 + i32.const 100 + i32.ne if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + loop $for-loop|3 local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f32_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.trunc_f32_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f32_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 27 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 2 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $4 - call $~lib/map/Map#set:buckets - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $8 - i32.store offset=8 - local.get $3 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store - loop $for-loop|01 - local.get $5 - local.get $6 - i32.gt_s - if - local.get $10 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $4 + if + local.get $4 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $4 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find21 + local.get $1 + i32.const -2 + i32.and + local.set $4 + br $while-continue|022 + end + end + i32.const 0 + local.set $4 + end local.get $4 - f32.load - local.set $1 - local.get $0 - local.get $3 - i32.load offset=12 - i32.ge_u + i32.eqz if - local.get $0 i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - call $~lib/array/ensureSize - local.get $3 - local.get $4 - i32.store offset=12 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $14 + local.get $2 + call $~lib/map/Map#get + local.get $2 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + local.get $2 + call $~lib/map/Map#delete + local.get $14 + i32.load + local.get $14 i32.load offset=4 - local.get $0 + local.get $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and i32.const 2 i32.shl i32.add - local.get $1 - f32.store - local.get $0 + i32.load + local.set $4 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $4 + if + local.get $4 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $4 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find24 + local.get $1 + i32.const -2 + i32.and + local.set $4 + br $while-continue|025 + end + end + i32.const 0 + local.set $4 + end + local.get $4 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 + br $for-loop|3 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|01 end - end - local.get $3 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/map/Map#values - local.tee $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 28 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|2 - local.get $7 - local.get $3 - i32.load offset=12 - i32.lt_s + local.get $14 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $7 - local.get $3 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $1 - local.get $6 - local.get $7 - call $~lib/array/Array#__get - local.set $4 - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $4 - i32.const 20 - i32.sub - f32.convert_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - call $~lib/map/Map#set - local.get $5 - local.get $4 - i32.const 20 - i32.sub - local.tee $4 - local.get $4 - call $~lib/map/Map#set - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|2 + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f32.const 50 - f32.lt - if - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f32_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#delete + local.set $2 + loop $for-loop|4 local.get $2 - local.get $1 - call $~lib/map/Map#has + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $4 + if + local.get $4 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $4 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find27 + local.get $1 + i32.const -2 + i32.and + local.set $4 + br $while-continue|028 + end + end + i32.const 0 + local.set $4 + end + local.get $4 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + local.get $2 + local.get $2 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $4 + if + local.get $4 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $4 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find30 + local.get $1 + i32.const -2 + i32.and + local.set $4 + br $while-continue|031 + end + end + i32.const 0 + local.set $4 + end + local.get $4 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $14 + local.get $2 + call $~lib/map/Map#delete + local.get $14 + i32.load + local.get $14 + i32.load offset=4 + local.get $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + block $__inlined_func$~lib/map/Map#find33 + loop $while-continue|034 + local.get $4 + if + local.get $4 + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $4 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find33 + local.get $1 + i32.const -2 + i32.and + local.set $4 + br $while-continue|034 + end + end + i32.const 0 + local.set $4 + end + local.get $4 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|4 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|3 end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f32.const 50 - f32.lt + local.get $14 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.trunc_f32_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#delete - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|4 + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $14 + call $~lib/map/Map#clear + local.get $14 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/map/Map#clear - local.get $2 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - 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 + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/hash/HASH (param $0 f64) (result i32) - (local $1 i32) - (local $2 i64) + (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) local.get $0 - i64.reinterpret_f64 - local.tee $2 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -11491,7 +14046,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $2 + local.get $1 i64.const 32 i64.shr_u i32.wrap_i64 @@ -11502,82 +14057,69 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load local.set $0 - loop $while-continue|0 - local.get $0 - if + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f64.load - f64.eq - end if local.get $0 - return + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + i32.const 0 + local.set $0 end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) (local $8 i32) (local $9 i32) @@ -11585,11 +14127,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -11597,7 +14150,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -11605,7 +14158,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $5 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -11613,48 +14166,86 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $8 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $6 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $9 + local.get $4 + local.get $8 i32.ne if - local.get $9 + local.get $8 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $9 - f64.load - local.tee $5 - f64.store + local.get $8 + i64.load + local.tee $6 + i64.store local.get $2 - local.get $9 + local.get $8 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH + 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 $4 + local.tee $9 i32.load i32.store offset=12 - local.get $4 + local.get $9 local.get $2 i32.store local.get $2 @@ -11662,24 +14253,30 @@ i32.add local.set $2 end - local.get $9 + local.get $8 i32.const 16 i32.add - local.set $9 + local.set $8 br $while-continue|0 end end local.get $0 - local.get $8 - call $~lib/map/Map#set:buckets + 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 - call $~lib/map/Map#set:entries + i32.store offset=8 local.get $0 - local.get $7 + local.get $3 + call $~lib/rt/itcms/__link + local.get $0 + local.get $5 i32.store offset=12 local.get $0 local.get $0 @@ -11690,152 +14287,219 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end + i32.load 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 f64) - (local $6 i32) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.load offset=4 local.get $1 - i32.const 1 + 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 $1 + 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 $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.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 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 + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl 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 + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 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 $5 - call $~lib/util/hash/HASH - local.get $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=16 - local.get $4 - local.get $2 - i32.store + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find local.get $2 - i32.const 24 - i32.add - local.set $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $9 - i32.const 24 - i32.add - local.set $9 - br $while-continue|0 end + i32.const 0 + local.set $0 end local.get $0 - local.get $8 - call $~lib/map/Map#set:buckets + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.load offset=8 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map#set:entries - local.get $0 - local.get $7 - i32.store offset=12 local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + i64.store ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 + i32.load + local.get $0 + i32.load offset=4 local.get $1 + 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 $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=12 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 i32.eqz if return @@ -11884,1731 +14548,6506 @@ if local.get $0 local.get $3 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric + (func $~lib/map/Map#clear (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $std/map/testNumeric (local $0 i32) - (local $1 f64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i64) + (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 29 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 3 - i32.store offset=4 - local.get $2 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $2 - i32.const 4 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - 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 $2 - i32.store - loop $for-loop|0 - local.get $1 - f64.const 100 - f64.lt - if - local.get $2 - local.get $1 - call $~lib/map/Map#has + block $folding-inner1 + 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 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 4 + 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 $3 + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + local.get $6 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $6 + local.get $3 + call $~lib/rt/itcms/__link + local.get $6 + i32.const 3 + i32.store offset=4 + local.get $6 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $6 + local.get $3 + call $~lib/rt/itcms/__link + local.get $6 + i32.const 4 + i32.store offset=12 + local.get $6 + i32.const 0 + i32.store offset=16 + local.get $6 + 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 + i32.store + loop $for-loop|0 + local.get $5 + i64.const 100 + i64.lt_s if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $6 + local.get $5 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + local.get $5 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#get + local.get $5 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i64.const 1 + i64.add + local.set $5 + br $for-loop|0 end - local.get $2 - local.get $1 - local.get $1 - i32.trunc_f64_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz + end + local.get $6 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + i64.const 100 + i64.lt_s if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#get + local.get $5 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + local.get $5 + i32.wrap_i64 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#get + local.get $5 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i64.const 1 + i64.add + local.set $5 + br $for-loop|1 end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f64_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + end + local.get $6 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $6 + i32.load offset=8 + local.set $9 + local.get $6 + i32.load offset=16 + local.set $10 + local.get $3 + 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 + i32.const 16 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + i32.const 0 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $10 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 3 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=4 + local.get $8 + local.get $2 + call $~lib/memory/memory.fill + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $2 + i32.store offset=8 + 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 + i32.store + loop $for-loop|01 + local.get $4 + local.get $10 + i32.lt_s + if + local.get $9 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $7 + local.get $1 + local.get $3 + i64.load + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|01 + end + end + local.get $7 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $7 + local.get $1 + 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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + call $~lib/map/Map#values + local.tee $16 + i32.store offset=8 + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $4 + local.get $3 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 3 + i32.store offset=4 + local.get $4 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $4 + local.get $3 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 4 + i32.store offset=12 + local.get $4 + i32.const 0 + i32.store offset=16 + 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 $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $13 + i32.store offset=16 + loop $for-loop|2 + local.get $11 + local.get $7 + i32.load offset=12 + i32.lt_s + if + local.get $11 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.load offset=4 + local.get $11 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + local.get $16 + local.get $11 + call $~lib/array/Array#__get + local.set $14 + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $14 + i32.const 20 + i32.sub + i64.extend_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + 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 $5 + 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 $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $2 + local.set $17 + local.get $4 + i32.load + local.get $2 + local.get $4 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $5 + local.get $1 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + local.get $1 + local.get $5 + i64.store offset=8 + else + local.get $4 + i32.load offset=16 + local.get $4 + i32.load offset=12 + i32.eq + if + local.get $4 + i32.load offset=20 + local.get $4 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $4 + i32.load offset=4 + else + local.get $4 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=8 + local.tee $9 + i32.store + local.get $4 + local.get $4 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $9 + local.get $2 + i32.const 24 + i32.mul + i32.add + local.tee $2 + local.get $5 + i64.store + local.get $2 + local.get $5 + i64.store offset=8 + local.get $4 + local.get $4 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $4 + i32.load + local.get $17 + local.get $4 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store offset=16 + local.get $3 + local.get $2 + 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 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|2 + end + end + local.get $4 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i64.const 50 + i64.lt_s + if + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#get + local.get $5 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#delete + local.get $6 + local.get $5 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i64.const 1 + i64.add + local.set $5 + br $for-loop|3 + end + end + local.get $6 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i64.const 50 + i64.lt_s + if + local.get $6 + local.get $5 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + local.get $5 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#delete + local.get $6 + local.get $5 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i64.const 1 + i64.add + local.set $5 + br $for-loop|4 + end + end + local.get $6 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/map/Map#clear + local.get $6 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return + end + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + 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 $1 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.const 0 + i32.ne + ) + (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 4 + i32.shl + 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 4 + i32.shl + 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=12 + 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 + i32.load offset=8 + i32.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=12 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $8 + i32.const 16 + 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#get (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + 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 $1 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + 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 $1 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=12 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i64) + (local $16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + 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 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 4 + 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 $3 + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + local.get $6 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $6 + local.get $3 + call $~lib/rt/itcms/__link + local.get $6 + i32.const 3 + i32.store offset=4 + local.get $6 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $6 + local.get $3 + call $~lib/rt/itcms/__link + local.get $6 + i32.const 4 + i32.store offset=12 + local.get $6 + i32.const 0 + i32.store offset=16 + local.get $6 + 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 + i32.store + loop $for-loop|0 + local.get $5 + i64.const 100 + i64.lt_u + if + local.get $6 + local.get $5 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + local.get $5 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#get + local.get $5 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i64.const 1 + i64.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + i64.const 100 + i64.lt_u + if + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#get + local.get $5 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + local.get $5 + i32.wrap_i64 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#get + local.get $5 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i64.const 1 + i64.add + local.set $5 + br $for-loop|1 + end + end + local.get $6 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $6 + i32.load offset=8 + local.set $9 + local.get $6 + i32.load offset=16 + local.set $10 + local.get $3 + 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 + i32.const 16 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + i32.const 0 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $10 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 3 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=4 + local.get $8 + local.get $2 + call $~lib/memory/memory.fill + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $2 + i32.store offset=8 + 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 + i32.store + loop $for-loop|01 + local.get $4 + local.get $10 + i32.lt_s + if + local.get $9 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $7 + local.get $1 + local.get $3 + i64.load + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|01 + end + end + local.get $7 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $7 + local.get $1 + 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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + call $~lib/map/Map#values + local.tee $16 + i32.store offset=8 + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $4 + local.get $3 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 3 + i32.store offset=4 + local.get $4 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $4 + local.get $3 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 4 + i32.store offset=12 + local.get $4 + i32.const 0 + i32.store offset=16 + 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 $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $13 + i32.store offset=16 + loop $for-loop|2 + local.get $11 + local.get $7 + i32.load offset=12 + i32.lt_s + if + local.get $11 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.load offset=4 + local.get $11 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + local.get $16 + local.get $11 + call $~lib/array/Array#__get + local.set $14 + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $14 + i32.const 20 + i32.sub + i64.extend_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + 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 $5 + 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 $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $2 + local.set $17 + local.get $4 + i32.load + local.get $2 + local.get $4 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $5 + local.get $1 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + local.get $1 + local.get $5 + i64.store offset=8 + else + local.get $4 + i32.load offset=16 + local.get $4 + i32.load offset=12 + i32.eq + if + local.get $4 + i32.load offset=20 + local.get $4 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $4 + i32.load offset=4 + else + local.get $4 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=8 + local.tee $9 + i32.store + local.get $4 + local.get $4 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $9 + local.get $2 + i32.const 24 + i32.mul + i32.add + local.tee $2 + local.get $5 + i64.store + local.get $2 + local.get $5 + i64.store offset=8 + local.get $4 + local.get $4 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $4 + i32.load + local.get $17 + local.get $4 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store offset=16 + local.get $3 + local.get $2 + 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 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $for-loop|2 + end + end + local.get $4 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i64.const 50 + i64.lt_u + if + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#get + local.get $5 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#delete + local.get $6 + local.get $5 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i64.const 1 + i64.add + local.set $5 + br $for-loop|3 + end + end + local.get $6 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i64.const 50 + i64.lt_u + if + local.get $6 + local.get $5 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + local.get $5 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $6 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $5 + call $~lib/map/Map#delete + local.get $6 + local.get $5 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i64.const 1 + i64.add + local.set $5 + br $for-loop|4 + end + end + local.get $6 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/map/Map#clear + local.get $6 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return + end + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (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 $6 + i32.const 12 + 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 12 + i32.mul + i32.add + local.set $5 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $5 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + f32.load + local.tee $4 + f32.store + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $7 + local.get $1 + local.get $4 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + 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=8 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + 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 $6 + 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#get (param $0 i32) (param $1 f32) (result i32) + (local $2 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + (local $6 f32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + 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 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 4 + 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 $0 + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $17 + i32.store + local.get $17 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $17 + local.get $0 + call $~lib/rt/itcms/__link + local.get $17 + i32.const 3 + i32.store offset=4 + local.get $17 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=8 + local.get $17 + local.get $0 + call $~lib/rt/itcms/__link + local.get $17 + i32.const 4 + i32.store offset=12 + local.get $17 + i32.const 0 + i32.store offset=16 + local.get $17 + 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 $17 + i32.store + loop $for-loop|0 + local.get $6 + f32.const 100 + f32.lt + if + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + local.get $6 + i32.trunc_f32_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|02 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + call $~lib/map/Map#get + local.get $6 + i32.trunc_f32_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + f32.const 1 + f32.add + local.set $6 + br $for-loop|0 + end + end + local.get $17 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + f32.const 100 + f32.lt + if + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|05 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + call $~lib/map/Map#get + local.get $6 + i32.trunc_f32_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + local.get $6 + i32.trunc_f32_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|08 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + call $~lib/map/Map#get + local.get $6 + i32.trunc_f32_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + f32.const 1 + f32.add + local.set $6 + br $for-loop|1 + end + end + local.get $17 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $11 + i32.const 4 + 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 + i32.const 0 + i32.store + local.get $17 + i32.load offset=8 + local.set $10 + local.get $17 + i32.load offset=16 + local.tee $4 + local.set $15 + local.get $1 + local.tee $0 + 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 + i32.const 16 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.const 2 + i32.shl + local.tee $13 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + local.get $13 + call $~lib/memory/memory.fill + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + local.get $1 + local.get $5 + i32.store offset=4 + local.get $1 + local.get $13 + i32.store offset=8 + local.get $1 + local.get $15 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.store + loop $for-loop|01 + local.get $4 + local.get $16 + i32.gt_s + if + local.get $10 + local.get $16 + i32.const 12 + i32.mul + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $5 + f32.load + local.set $6 + local.get $0 + local.get $1 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 1 + i32.add + local.tee $5 + i32.const 2 + call $~lib/array/ensureSize + local.get $1 + local.get $5 + i32.store offset=12 + end + local.get $1 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store + end + local.get $16 + i32.const 1 + i32.add + local.set $16 + br $for-loop|01 + end + end + local.get $1 + local.get $2 + i32.const 2 + call $~lib/array/ensureSize + local.get $1 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + local.get $1 + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $17 + call $~lib/map/Map#values + local.tee $9 + i32.store offset=8 + 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 2020 + 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 24 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + i32.const 3 + i32.store offset=4 + local.get $2 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=8 + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + i32.const 4 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + 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 $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $11 + i32.store offset=16 + loop $for-loop|2 + local.get $12 + local.get $5 + i32.load offset=12 + i32.lt_s + if + local.get $12 + local.get $5 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=4 + local.get $12 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $6 + local.get $9 + local.get $12 + call $~lib/array/Array#__get + local.set $10 + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find11 + loop $while-continue|012 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $16 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find11 + local.get $16 + i32.const -2 + i32.and + local.set $1 + br $while-continue|012 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $10 + i32.const 20 + i32.sub + f32.convert_i32_s + local.tee $3 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find14 + loop $while-continue|015 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $16 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find14 + local.get $16 + i32.const -2 + i32.and + local.set $1 + br $while-continue|015 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.load + local.get $6 + local.tee $3 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + local.tee $8 + local.get $2 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find17 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|018 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $0 + local.get $3 + f32.store offset=4 + else + local.get $2 + i32.load offset=16 + local.get $2 + i32.load offset=12 + i32.eq + if + local.get $2 + i32.load offset=20 + local.get $2 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $2 + i32.load offset=4 + else + local.get $2 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $16 + 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 $0 + i64.const 0 + i64.store + local.get $0 + local.get $16 + i32.const 1 + i32.add + local.tee $0 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $13 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + local.get $2 + i32.load offset=8 + local.tee $15 + local.get $2 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $1 + local.get $4 + local.set $0 + loop $while-continue|019 + local.get $1 + local.get $15 + i32.ne + if + local.get $15 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $15 + f32.load + local.tee $6 + f32.store + local.get $0 + local.get $15 + f32.load offset=4 + f32.store offset=4 + local.get $0 + local.get $13 + local.get $16 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + 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=8 + local.get $14 + local.get $0 + i32.store + local.get $0 + i32.const 12 + i32.add + local.set $0 + end + local.get $15 + i32.const 12 + i32.add + local.set $15 + br $while-continue|019 + end + end + local.get $2 + local.get $13 + i32.store + local.get $2 + local.get $13 + call $~lib/rt/itcms/__link + local.get $2 + local.get $16 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + call $~lib/rt/itcms/__link + local.get $2 + local.get $7 + i32.store offset=12 + local.get $2 + local.get $2 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=8 + local.tee $0 + i32.store + local.get $2 + local.get $2 + i32.load offset=16 + local.tee $16 + i32.const 1 + i32.add + i32.store offset=16 + local.get $0 + local.get $16 + i32.const 12 + i32.mul + i32.add + local.tee $0 + local.get $3 + f32.store + local.get $0 + local.get $3 + f32.store offset=4 + local.get $2 + local.get $2 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + local.get $2 + i32.load + local.get $8 + local.get $2 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load + i32.store offset=8 + local.get $1 + local.get $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + local.get $10 + i32.const 20 + i32.sub + local.tee $1 + local.get $1 + call $~lib/map/Map#set + local.get $12 + i32.const 1 + i32.add + local.set $12 + br $for-loop|2 end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|0 end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - f64.const 100 - f64.lt + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $6 + loop $for-loop|3 + local.get $6 + f32.const 50 + f32.lt if - i32.const 0 - i32.const 1568 + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f64_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.trunc_f64_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f64_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find21 + local.get $2 + i32.const -2 + i32.and + local.set $1 + br $while-continue|022 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + call $~lib/map/Map#get + local.get $6 + i32.trunc_f32_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + call $~lib/map/Map#delete + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find24 + local.get $2 + i32.const -2 + i32.and + local.set $1 + br $while-continue|025 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + f32.const 1 + f32.add + local.set $6 + br $for-loop|3 end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 30 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 134217727 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 3 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $4 - call $~lib/map/Map#set:buckets - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $8 - i32.store offset=8 - local.get $3 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store - loop $for-loop|01 - local.get $5 - local.get $6 - i32.gt_s + end + local.get $17 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $10 + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $6 + loop $for-loop|4 local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $4 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz + f32.const 50 + f32.lt if - local.get $4 - f64.load + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load local.set $1 - local.get $0 - local.get $3 - i32.load offset=12 - i32.ge_u + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find27 + local.get $2 + i32.const -2 + i32.and + local.set $1 + br $while-continue|028 + end + end + i32.const 0 + local.set $1 + end + local.get $1 if - local.get $0 i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - call $~lib/array/ensureSize - local.get $3 - local.get $4 - i32.store offset=12 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $17 + local.get $6 + local.get $6 + i32.trunc_f32_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $17 + i32.load + local.get $17 i32.load offset=4 - local.get $0 - i32.const 3 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 i32.shl i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find30 + local.get $2 + i32.const -2 + i32.and + local.set $1 + br $while-continue|031 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + call $~lib/map/Map#delete + local.get $17 + i32.load + local.get $17 + i32.load offset=4 + local.get $6 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 local.get $1 - f64.store - local.get $0 - i32.const 1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add - local.set $0 + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find33 + loop $while-continue|034 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $1 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find33 + local.get $2 + i32.const -2 + i32.and + local.set $1 + br $while-continue|034 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $6 + f32.const 1 + f32.add + local.set $6 + br $for-loop|4 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|01 end + local.get $17 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $17 + call $~lib/map/Map#clear + local.get $17 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + 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 + return end - local.get $3 + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + (local $3 i64) local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + 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 $2 local.get $2 - call $~lib/map/Map#values - local.tee $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f64.load + f64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.const 0 + i32.ne + ) + (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 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + 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 - i32.const 24 - i32.const 31 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 16 + 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 - call $~lib/map/Map#set:buckets - local.get $0 + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $0 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 i32.const 4 - i32.store offset=12 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 local.get $0 - i32.const 0 - i32.store offset=16 + i32.load offset=8 + local.tee $9 local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer + i32.load offset=16 i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $5 - i32.store offset=16 - loop $for-loop|2 - local.get $7 - local.get $3 - i32.load offset=12 - i32.lt_s + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne if - local.get $7 - local.get $3 + local.get $9 i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $1 - local.get $6 - local.get $7 - call $~lib/array/Array#__get - local.set $4 - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $4 - i32.const 20 - i32.sub - f64.convert_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - call $~lib/map/Map#set - local.get $5 - local.get $4 - i32.const 20 - i32.sub - local.tee $4 - local.get $4 - call $~lib/map/Map#set - local.get $7 i32.const 1 - i32.add - local.set $7 - br $for-loop|2 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f64.const 50 - f64.lt - if - local.get $2 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f64_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#delete - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|3 - end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f64.const 50 - f64.lt - if - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $1 - i32.trunc_f64_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $2 - local.get $1 - call $~lib/map/Map#has + i32.and i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/map/Map#delete - local.get $2 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $9 + f64.load + local.tee $5 + f64.store + local.get $2 + local.get $9 + i32.load offset=8 + i32.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=12 + local.get $10 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|4 + local.get $9 + i32.const 16 + i32.add + local.set $9 + br $while-continue|0 end end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/map/Map#clear - local.get $2 + 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 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - 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 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid - end - return - end - return - end + (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + (local $3 i64) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + 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 $3 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if local.get $0 - i32.load - local.tee $0 - if + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 local.get $0 - call $~lib/rt/itcms/__visit + f64.load + f64.eq end - return + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - unreachable end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - return + i32.const 0 + local.set $0 end local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 ) - (func $~start - memory.size + (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i64) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 i32.const 16 - i32.shl - i32.const 18404 - i32.sub - i32.const 1 i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1168 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - global.get $~lib/rt/itcms/state + local.get $2 if - call $~lib/rt/itcms/step - drop + local.get $2 + i32.load offset=12 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + f64.load + f64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $2 br $while-continue|0 end end + i32.const 0 + local.set $2 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 - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s + local.get $2 + i32.eqz if - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1504 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 local.get $0 - call $~lib/memory/memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/map/Map#rehash + end ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/map/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f64) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (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) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $15 + i64.const 0 + i64.store + local.get $15 + i64.const 0 + i64.store offset=8 + local.get $15 + i32.const 0 + i32.store offset=16 + local.get $15 + i32.const 4 + 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 + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $17 + i32.store + local.get $17 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $17 local.get $2 + call $~lib/rt/itcms/__link + local.get $17 + i32.const 3 i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + local.get $17 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store offset=8 + local.get $17 + local.get $2 + call $~lib/rt/itcms/__link + local.get $17 + i32.const 4 + i32.store offset=12 + local.get $17 + i32.const 0 + i32.store offset=16 + local.get $17 + 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 + i32.store + loop $for-loop|0 + local.get $18 + f64.const 100 + f64.lt + if + local.get $17 + local.get $18 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + local.get $18 + i32.trunc_f64_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $17 + local.get $18 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + call $~lib/map/Map#get + local.get $18 + i32.trunc_f64_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $18 + f64.const 1 + f64.add + local.set $18 + br $for-loop|0 + end + end + local.get $17 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $18 + loop $for-loop|1 + local.get $18 + f64.const 100 + f64.lt + if + local.get $17 + local.get $18 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + call $~lib/map/Map#get + local.get $18 + i32.trunc_f64_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + local.get $18 + i32.trunc_f64_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $17 + local.get $18 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + call $~lib/map/Map#get + local.get $18 + i32.trunc_f64_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $18 + f64.const 1 + f64.add + local.set $18 + br $for-loop|1 + end + end + local.get $17 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 + i32.const 0 + i32.const 1568 + i32.const 21 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 local.tee $3 + i32.const 4 + 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 + i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $17 + i32.load offset=8 + local.set $0 + local.get $17 i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 + local.tee $9 + local.set $14 local.get $2 + 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 $15 + i64.const 0 + i64.store + local.get $15 + i32.const 16 + i32.const 30 + call $~lib/rt/itcms/__new + local.tee $16 + i32.store + local.get $16 + i32.const 0 + i32.store + local.get $16 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $16 + i32.const 0 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load + local.get $16 + i32.const 0 i32.store offset=8 - local.get $0 - local.get $3 + local.get $16 + i32.const 0 + i32.store offset=12 + local.get $9 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.const 3 + i32.shl + local.tee $15 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $13 + i32.store offset=4 + local.get $13 + local.get $15 + call $~lib/memory/memory.fill + local.get $16 + local.get $13 i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#constructor (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/map/Map#set:buckets - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.tee $3 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - local.get $2 - call $~lib/map/Map#set:buckets - local.get $1 - local.get $2 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/map/Map#values (param $0 i32) (result 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.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=16 - local.tee $4 - call $~lib/array/Array#constructor - local.tee $0 - i32.store - loop $for-loop|0 + local.get $16 + local.get $13 + call $~lib/rt/itcms/__link + local.get $16 + local.get $13 + i32.store offset=4 + local.get $16 + local.get $15 + i32.store offset=8 + local.get $16 + local.get $14 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + local.get $16 + i32.store + loop $for-loop|01 + local.get $9 + local.get $11 + i32.gt_s if local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $1 + local.get $11 + i32.const 4 + i32.shl + i32.add + local.tee $15 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $15 + f64.load + local.set $18 + local.get $2 + local.get $16 + i32.load offset=12 + i32.ge_u + if + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $16 + local.get $2 + i32.const 1 + i32.add + local.tee $15 + i32.const 3 + call $~lib/array/ensureSize + local.get $16 + local.get $15 + i32.store offset=12 + end + local.get $16 + i32.load offset=4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.get $18 + f64.store + end + local.get $11 i32.const 1 i32.add - local.set $1 + local.set $11 + br $for-loop|01 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/map/Map#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - local.tee $3 - call $~lib/util/hash/HASH - local.set $5 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 + local.get $16 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $16 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $16 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $17 + call $~lib/map/Map#values + local.tee $5 + i32.store offset=8 + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store + local.get $3 + local.get $2 + call $~lib/rt/itcms/__link + local.get $3 + i32.const 3 + i32.store offset=4 + local.get $3 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store offset=8 + local.get $3 + local.get $2 + call $~lib/rt/itcms/__link + local.get $3 + i32.const 4 + i32.store offset=12 + local.get $3 + i32.const 0 + i32.store offset=16 + local.get $3 + 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 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $7 + i32.store offset=16 + loop $for-loop|2 + local.get $10 + local.get $16 + i32.load offset=12 + i32.lt_s if + local.get $10 + local.get $16 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $16 + i32.load offset=4 + local.get $10 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $18 + local.get $5 + local.get $10 + call $~lib/array/Array#__get + local.set $6 + local.get $17 + local.get $18 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $6 + i32.const 20 + i32.sub + f64.convert_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $18 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + 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 i32.load offset=4 - local.tee $4 - i32.const 1 i32.and - if (result i32) + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=16 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $18 + local.get $0 + f64.load + f64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $0 + local.get $18 + f64.store offset=8 else + local.get $3 + i32.load offset=16 + local.get $3 + i32.load offset=12 + i32.eq + if + local.get $3 + i32.load offset=20 + local.get $3 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $3 + i32.load offset=4 + else + local.get $3 + 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 $11 + 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 $12 + local.get $3 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $9 + local.get $1 + local.set $0 + loop $while-continue|02 + local.get $9 + local.get $12 + i32.ne + if + local.get $12 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $12 + f64.load + local.tee $4 + f64.store + local.get $0 + local.get $12 + 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 $12 + i32.const 24 + i32.add + local.set $12 + 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 $11 + 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 + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=8 + local.tee $15 + i32.store + local.get $3 + local.get $3 + i32.load offset=16 + local.tee $1 + i32.const 1 + i32.add + i32.store offset=16 + local.get $15 local.get $1 - i32.load8_u + 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.get $3 - i32.const 255 + local.get $3 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $1 + local.get $3 + i32.load + local.get $13 + local.get $3 + i32.load offset=4 i32.and - i32.eq + i32.const 2 + i32.shl + i32.add + local.tee $2 + i32.load + i32.store offset=16 + local.get $2 + local.get $1 + i32.store end - br_if $__inlined_func$~lib/map/Map#find - local.get $4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $6 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $10 + i32.const 1 + i32.add + local.set $10 + br $for-loop|2 end end - i32.const 0 - local.set $1 - end - local.get $1 - if - local.get $1 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + local.get $3 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 + i32.const 0 + i32.const 1568 + i32.const 36 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $18 + loop $for-loop|3 + local.get $18 + f64.const 50 + f64.lt + if + local.get $17 + local.get $18 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + call $~lib/map/Map#get + local.get $18 + i32.trunc_f64_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + call $~lib/map/Map#delete + local.get $17 + local.get $18 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $18 + f64.const 1 + f64.add + local.set $18 + br $for-loop|3 end - call $~lib/map/Map#rehash end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $1 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - local.get $3 - i32.store8 - local.get $1 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 + local.get $17 i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $1 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + i32.const 50 + i32.ne if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 + i32.const 0 + i32.const 1568 + i32.const 46 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $18 + loop $for-loop|4 + local.get $18 + f64.const 50 + f64.lt + if + local.get $17 + local.get $18 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + local.get $18 + i32.trunc_f64_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $17 + local.get $18 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.get $18 + call $~lib/map/Map#delete + local.get $17 + local.get $18 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $18 + f64.const 1 + f64.add + local.set $18 + br $for-loop|4 end - call $~lib/map/Map#rehash + end + local.get $17 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $17 + call $~lib/map/Map#clear + local.get $17 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 20 i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store + 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 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + 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 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return end - call $~lib/map/Map#rehash + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 i32.load - i32.store offset=8 + call $~lib/rt/itcms/__visit local.get $0 - local.get $3 - i32.store + i32.load offset=8 + call $~lib/rt/itcms/__visit + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - local.tee $3 - call $~lib/util/hash/HASH - local.set $5 local.get $0 i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 + call $~lib/rt/itcms/__visit + ) + (func $~start + memory.size + i32.const 16 i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 - if - local.get $1 - i32.load offset=4 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $4 - i32.const -2 - i32.and - local.set $1 + i32.const 18404 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + global.get $~lib/rt/itcms/state + 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 - i32.const 0 - local.set $1 end - local.get $1 - if - local.get $1 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash + call $~lib/rt/itcms/step + drop + br $while-continue|1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $1 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - local.get $3 - i32.store8 - local.get $1 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $1 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $1 - i32.store end - global.get $~lib/memory/__stack_pointer - i32.const 4 + 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/memory/__stack_pointer + global.set $~lib/rt/itcms/threshold ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find - local.tee $3 + i32.const 1073741820 + i32.gt_u if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store + i32.const 1456 + i32.const 1504 + i32.const 49 + i32.const 43 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13616,17 +21055,56 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store + local.get $0 + i32.load + local.get $1 + local.tee $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 local.get $1 - local.tee $3 - call $~lib/util/hash/HASH - local.set $5 - local.get $0 - i32.load - local.get $5 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 local.get $0 i32.load offset=4 i32.and @@ -13635,12 +21113,12 @@ i32.add i32.load local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $1 if local.get $1 - i32.load offset=4 + i32.load offset=8 local.tee $4 i32.const 1 i32.and @@ -13648,13 +21126,13 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load8_u local.get $3 - i32.const 65535 + i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find + br_if $__inlined_func$~lib/map/Map#find local.get $4 i32.const -2 i32.and @@ -13669,7 +21147,7 @@ if local.get $1 local.get $2 - i32.store16 offset=2 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -13698,7 +21176,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 @@ -13714,15 +21192,15 @@ i32.store offset=16 local.get $1 local.get $4 - i32.const 3 - i32.shl + i32.const 12 + i32.mul i32.add local.tee $1 local.get $3 - i32.store16 + i32.store8 local.get $1 local.get $2 - i32.store16 offset=2 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=20 @@ -13741,7 +21219,7 @@ i32.add local.tee $0 i32.load - i32.store offset=4 + i32.store offset=8 local.get $0 local.get $1 i32.store @@ -13751,111 +21229,238 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#constructor (param $0 i32) (result 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 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 i32.const 0 i32.store - local.get $0 local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/map/Map#values (param $0 i32) (result 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.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s if - local.get $3 + 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 + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + local.set $4 + local.get $2 + local.get $0 + i32.load offset=16 + local.tee $2 + call $~lib/array/Array#constructor + local.tee $0 + i32.store + loop $for-loop|0 local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + local.get $3 + i32.gt_s if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 + local.get $4 + local.get $3 + i32.const 12 i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if local.get $0 + local.get $1 + local.get $5 i32.load offset=4 + call $~lib/array/Array#__set + local.get $1 i32.const 1 - i32.shl - i32.const 1 - i32.or + i32.add + local.set $1 end - call $~lib/map/Map#rehash + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 + end + local.get $0 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/map/Map#constructor (result i32) + (local $0 i32) + (local $1 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 2020 + i32.lt_s + if + i32.const 18432 + i32.const 18480 i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store + 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 + i32.const 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13863,17 +21468,52 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store - local.get $1 - local.tee $3 - call $~lib/util/hash/HASH - local.set $5 local.get $0 i32.load - local.get $5 + local.get $1 + local.tee $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 local.get $0 i32.load offset=4 i32.and @@ -13882,26 +21522,24 @@ i32.add i32.load local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $1 if local.get $1 - i32.load offset=4 + i32.load offset=8 local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load16_u local.get $3 - i32.const 65535 - i32.and + local.get $1 + i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find + br_if $__inlined_func$~lib/map/Map#find local.get $4 i32.const -2 i32.and @@ -13916,7 +21554,7 @@ if local.get $1 local.get $2 - i32.store16 offset=2 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -13945,7 +21583,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 @@ -13961,15 +21599,15 @@ i32.store offset=16 local.get $1 local.get $4 - i32.const 3 - i32.shl + i32.const 12 + i32.mul i32.add local.tee $1 local.get $3 - i32.store16 + i32.store local.get $1 local.get $2 - i32.store16 offset=2 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=20 @@ -13988,7 +21626,7 @@ i32.add local.tee $0 i32.load - i32.store offset=4 + i32.store offset=8 local.get $0 local.get $1 i32.store @@ -13998,7 +21636,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14006,123 +21644,95 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find - local.tee $3 + i32.const 2020 + i32.lt_s if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 + i32.const 18432 + i32.const 18480 i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer i32.const 0 i32.store local.get $0 + i32.load + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find - local.tee $3 if - local.get $3 + local.get $1 local.get $2 i32.store offset=4 else @@ -14153,29 +21763,29 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $5 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $3 - local.get $5 + local.get $1 + local.get $4 i32.const 12 i32.mul i32.add - local.tee $3 - local.get $1 - i32.store + local.tee $1 local.get $3 + i32.store8 + local.get $1 local.get $2 i32.store offset=4 local.get $0 @@ -14184,10 +21794,10 @@ i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -14198,7 +21808,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -14206,7 +21816,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14214,21 +21824,99 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find local.tee $3 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 if - local.get $3 + local.get $1 local.get $2 - i32.store offset=8 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -14257,126 +21945,60 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 4 - i32.shl - i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=12 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#values (param $0 i32) (result 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.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=16 - local.tee $4 - call $~lib/array/Array#constructor - local.tee $0 - i32.store - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - local.tee $5 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $5 - i32.load offset=8 - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $1 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $1 + local.get $3 + i32.store16 + local.get $1 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $1 + local.get $0 + i32.load + local.get $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $1 + i32.store end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14384,16 +22006,54 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store - local.get $1 - call $~lib/util/hash/HASH - local.set $5 local.get $0 i32.load - local.get $5 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 local.get $0 i32.load offset=4 i32.and @@ -14401,13 +22061,13 @@ i32.shl i32.add i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $1 if - local.get $3 - i32.load offset=16 + local.get $1 + i32.load offset=8 local.tee $4 i32.const 1 i32.and @@ -14415,26 +22075,28 @@ i32.const 0 else local.get $1 + i32.load16_u local.get $3 - i64.load - i64.eq + i32.const 65535 + i32.and + i32.eq end - br_if $__inlined_func$~lib/map/Map#find + br_if $__inlined_func$~lib/map/Map#find local.get $4 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if - local.get $3 + local.get $1 local.get $2 - i64.store offset=8 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -14463,12 +22125,12 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 @@ -14477,24 +22139,24 @@ i32.const 1 i32.add i32.store offset=16 - local.get $3 + local.get $1 local.get $4 - i32.const 24 + i32.const 12 i32.mul i32.add - local.tee $3 - local.get $1 - i64.store + local.tee $1 local.get $3 + i32.store16 + local.get $1 local.get $2 - i64.store offset=8 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load local.get $5 @@ -14506,9 +22168,9 @@ i32.add local.tee $0 i32.load - i32.store offset=16 + i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -14516,7 +22178,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14524,21 +22186,93 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find local.tee $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 if - local.get $3 + local.get $1 local.get $2 - i32.store offset=8 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -14567,41 +22301,41 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $5 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $3 - local.get $5 - i32.const 4 - i32.shl - i32.add - local.tee $3 local.get $1 - i64.store + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $1 local.get $3 + i32.store + local.get $1 local.get $2 - i32.store offset=8 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -14610,9 +22344,9 @@ i32.add local.tee $0 i32.load - i32.store offset=12 + i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -14620,7 +22354,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) + (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14628,16 +22362,63 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store - local.get $1 - call $~lib/util/hash/HASH - local.set $5 local.get $0 i32.load - local.get $5 + local.get $1 + 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 $1 + 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 $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 local.get $0 i32.load offset=4 i32.and @@ -14646,12 +22427,12 @@ i32.add i32.load local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $3 if local.get $3 - i32.load offset=16 + i32.load offset=12 local.tee $4 i32.const 1 i32.and @@ -14663,7 +22444,7 @@ i64.load i64.eq end - br_if $__inlined_func$~lib/map/Map#find + br_if $__inlined_func$~lib/map/Map#find local.get $4 i32.const -2 i32.and @@ -14678,7 +22459,7 @@ if local.get $3 local.get $2 - i64.store offset=8 + i32.store offset=8 else local.get $0 i32.load offset=16 @@ -14707,7 +22488,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 @@ -14723,15 +22504,15 @@ i32.store offset=16 local.get $3 local.get $4 - i32.const 24 - i32.mul + i32.const 4 + i32.shl i32.add local.tee $3 local.get $1 i64.store local.get $3 local.get $2 - i64.store offset=8 + i32.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -14750,7 +22531,7 @@ i32.add local.tee $0 i32.load - i32.store offset=16 + i32.store offset=12 local.get $0 local.get $3 i32.store @@ -14760,7 +22541,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14768,125 +22551,183 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 i32.const 0 i32.store local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 + i32.load offset=8 + local.set $4 + local.get $2 + local.get $0 + i32.load offset=16 + local.tee $2 + call $~lib/array/Array#constructor + local.tee $0 + i32.store + loop $for-loop|0 local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + local.get $3 + i32.gt_s if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul + local.get $4 + local.get $3 i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else + i32.shl + i32.add + local.tee $5 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if local.get $0 - i32.load offset=4 + local.get $1 + local.get $5 + i32.load offset=8 + call $~lib/array/Array#__set + local.get $1 i32.const 1 - i32.shl + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $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 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 + i32.const 0 + i32.store + local.get $0 + i32.load + local.get $1 + 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 $1 + 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 $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=12 + local.tee $4 i32.const 1 - i32.or + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 end - call $~lib/map/Map#rehash end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - f32.store - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store + i32.const 0 + local.set $3 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find - local.tee $3 + local.get $3 if local.get $3 local.get $2 - f32.store offset=4 + i32.store offset=8 else local.get $0 i32.load offset=16 @@ -14915,7 +22756,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 @@ -14925,21 +22766,21 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $5 + local.tee $4 i32.const 1 i32.add i32.store offset=16 local.get $3 - local.get $5 - i32.const 12 - i32.mul + local.get $4 + i32.const 4 + i32.shl i32.add local.tee $3 local.get $1 - f32.store + i64.store local.get $3 local.get $2 - f32.store offset=4 + i32.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -14949,7 +22790,7 @@ local.get $3 local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -14958,7 +22799,7 @@ i32.add local.tee $0 i32.load - i32.store offset=8 + i32.store offset=12 local.get $0 local.get $3 i32.store @@ -14968,7 +22809,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14976,21 +22817,93 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $3 + end + local.get $3 if local.get $3 local.get $2 - i32.store offset=8 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -15019,7 +22932,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 @@ -15029,21 +22942,21 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $5 + local.tee $4 i32.const 1 i32.add i32.store offset=16 local.get $3 - local.get $5 - i32.const 4 - i32.shl + local.get $4 + i32.const 12 + i32.mul i32.add local.tee $3 local.get $1 - f64.store + f32.store local.get $3 local.get $2 - i32.store offset=8 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=20 @@ -15053,7 +22966,7 @@ local.get $3 local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -15062,7 +22975,7 @@ i32.add local.tee $0 i32.load - i32.store offset=12 + i32.store offset=8 local.get $0 local.get $3 i32.store @@ -15072,24 +22985,74 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 f64) + (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store - local.get $1 - call $~lib/util/hash/HASH - local.set $5 local.get $0 i32.load + local.get $1 + i64.reinterpret_f64 + local.tee $5 + 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 $5 + 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 $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $6 local.get $0 i32.load offset=4 i32.and @@ -15098,12 +23061,12 @@ i32.add i32.load local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $3 if local.get $3 - i32.load offset=16 + i32.load offset=12 local.tee $4 i32.const 1 i32.and @@ -15115,7 +23078,7 @@ f64.load f64.eq end - br_if $__inlined_func$~lib/map/Map#find + br_if $__inlined_func$~lib/map/Map#find local.get $4 i32.const -2 i32.and @@ -15130,7 +23093,7 @@ if local.get $3 local.get $2 - f64.store offset=8 + i32.store offset=8 else local.get $0 i32.load offset=16 @@ -15159,7 +23122,7 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer local.get $0 @@ -15175,15 +23138,15 @@ i32.store offset=16 local.get $3 local.get $4 - i32.const 24 - i32.mul + i32.const 4 + i32.shl i32.add local.tee $3 local.get $1 f64.store local.get $3 local.get $2 - f64.store offset=8 + i32.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -15193,7 +23156,7 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $6 local.get $0 i32.load offset=4 i32.and @@ -15202,7 +23165,7 @@ i32.add local.tee $0 i32.load - i32.store offset=16 + i32.store offset=12 local.get $0 local.get $3 i32.store diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index f3c940be50..5ad3b11f64 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -1,26 +1,24 @@ (module (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 $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $none_=>_none (func)) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) + (type $none_=>_none (func)) + (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $none_=>_f64 (func (result f64))) (type $i64_=>_none (func (param i64))) (type $f64_=>_none (func (param f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_i64_i64_i64_i64_=>_none (func (param i64 i64 i64 i64 i64))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) + (type $f32_i32_f32_=>_i32 (func (param f32 i32 f32) (result i32))) + (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) + (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) (import "Math" "E" (global $~lib/bindings/Math/E f64)) @@ -66,16 +64,152 @@ (memory $0 1) (data (i32.const 1036) ",") (data (i32.const 1048) "\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 1088) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") - (data (i32.const 1280) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 1326) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 3366) "\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?") - (data (i32.const 3628) ",") - (data (i32.const 3640) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 1088) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\0d\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\0d\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\0d\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \0d\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\0d\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\0d\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\0d\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") + (data (i32.const 3136) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\0de\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") + (data (i32.const 5184) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\0d\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\0d\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") + (data (i32.const 5440) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") + (data (i32.const 5632) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") + (data (i32.const 5678) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data (i32.const 7718) "\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?") + (data (i32.const 7968) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\0d\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\0d\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\0d\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") + (data (i32.const 8992) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\0d\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") + (data (i32.const 10016) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\0d\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") + (data (i32.const 10277) "\a0\f6?") + (data (i32.const 10289) "\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?") + (data (i32.const 10321) "\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?") + (data (i32.const 10353) "XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?") + (data (i32.const 10385) "\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?") + (data (i32.const 10417) "xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?") + (data (i32.const 10449) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") + (data (i32.const 10481) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") + (data (i32.const 10513) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") + (data (i32.const 10545) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") + (data (i32.const 10577) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") + (data (i32.const 10609) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") + (data (i32.const 10641) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") + (data (i32.const 10673) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") + (data (i32.const 10705) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") + (data (i32.const 10737) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") + (data (i32.const 10769) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") + (data (i32.const 10801) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") + (data (i32.const 10833) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") + (data (i32.const 10865) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") + (data (i32.const 10897) "@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?") + (data (i32.const 10929) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") + (data (i32.const 10961) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") + (data (i32.const 10993) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") + (data (i32.const 11025) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") + (data (i32.const 11057) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") + (data (i32.const 11089) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") + (data (i32.const 11121) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") + (data (i32.const 11153) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") + (data (i32.const 11185) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") + (data (i32.const 11217) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") + (data (i32.const 11249) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") + (data (i32.const 11281) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") + (data (i32.const 11313) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") + (data (i32.const 11345) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") + (data (i32.const 11377) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") + (data (i32.const 11409) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") + (data (i32.const 11441) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") + (data (i32.const 11473) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") + (data (i32.const 12977) "`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?") + (data (i32.const 13009) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") + (data (i32.const 13041) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") + (data (i32.const 13073) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") + (data (i32.const 13105) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") + (data (i32.const 13137) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") + (data (i32.const 13169) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") + (data (i32.const 13201) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") + (data (i32.const 13233) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") + (data (i32.const 13265) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") + (data (i32.const 13297) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") + (data (i32.const 13329) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") + (data (i32.const 13361) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") + (data (i32.const 13393) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") + (data (i32.const 13425) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") + (data (i32.const 13457) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") + (data (i32.const 13489) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") + (data (i32.const 13521) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") + (data (i32.const 13554) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") + (data (i32.const 13586) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") + (data (i32.const 13617) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") + (data (i32.const 13649) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") + (data (i32.const 13681) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") + (data (i32.const 13713) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") + (data (i32.const 13745) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") + (data (i32.const 13777) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") + (data (i32.const 13810) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") + (data (i32.const 13841) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") + (data (i32.const 13873) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") + (data (i32.const 13905) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") + (data (i32.const 13937) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") + (data (i32.const 13969) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") + (data (i32.const 14001) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") + (data (i32.const 14033) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") + (data (i32.const 14065) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") + (data (i32.const 14097) "`\d3\e1\f1\14\d3?\b8 (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) local.get $0 @@ -408,6 +466,7 @@ end local.get $1 f32.sub + local.set $0 i32.const 150 local.get $1 i32.reinterpret_f32 @@ -424,7 +483,80 @@ i32.add end i32.sub - call $~lib/math/NativeMathf.scalbn + local.tee $3 + i32.const 127 + i32.gt_s + if (result f32) + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + local.set $0 + local.get $3 + i32.const 127 + i32.sub + local.tee $3 + i32.const 127 + i32.gt_s + if (result f32) + local.get $3 + i32.const 127 + i32.sub + local.tee $3 + i32.const 127 + local.get $3 + i32.const 127 + i32.lt_s + select + local.set $3 + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + else + local.get $0 + end + else + local.get $3 + i32.const -126 + i32.lt_s + if (result f32) + local.get $0 + f32.const 1.9721522630525295e-31 + f32.mul + local.set $0 + local.get $3 + i32.const 102 + i32.add + local.tee $3 + i32.const -126 + i32.lt_s + if (result f32) + local.get $3 + i32.const 102 + i32.add + local.tee $3 + i32.const -126 + local.get $3 + i32.const -126 + i32.gt_s + select + local.set $3 + local.get $0 + f32.const 1.9721522630525295e-31 + f32.mul + else + local.get $0 + end + else + local.get $0 + end + end + local.get $3 + i32.const 127 + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + f32.mul local.get $2 f32.add local.set $2 @@ -439,64 +571,84 @@ end i32.const 1 ) - (func $std/math/test_abs (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.abs + (func $std/math/test_scalbnf (param $0 f32) (param $1 i32) (param $2 f32) (result i32) local.get $1 - f64.const 0 - call $std/math/check - if (result i32) + i32.const 127 + i32.gt_s + if (result f32) local.get $0 - call $~lib/bindings/Math/abs + f32.const 1701411834604692317316873e14 + f32.mul + local.set $0 local.get $1 - f64.const 0 - call $std/math/check + i32.const 127 + i32.sub + local.tee $1 + i32.const 127 + i32.gt_s + if (result f32) + local.get $1 + i32.const 127 + i32.sub + local.tee $1 + i32.const 127 + local.get $1 + i32.const 127 + i32.lt_s + select + local.set $1 + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + else + local.get $0 + end else - i32.const 0 + local.get $1 + i32.const -126 + i32.lt_s + if (result f32) + local.get $0 + f32.const 1.9721522630525295e-31 + f32.mul + local.set $0 + local.get $1 + i32.const 102 + i32.add + local.tee $1 + i32.const -126 + i32.lt_s + if (result f32) + local.get $1 + i32.const 102 + i32.add + local.tee $1 + i32.const -126 + local.get $1 + i32.const -126 + i32.gt_s + select + local.set $1 + local.get $0 + f32.const 1.9721522630525295e-31 + f32.mul + else + local.get $0 + end + else + local.get $0 + end end - ) - (func $~lib/math/R (param $0 f64) (result f64) - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 3.479331075960212e-05 - f64.mul - f64.const 7.915349942898145e-04 - f64.add - f64.mul - f64.const -0.04005553450067941 - f64.add - f64.mul - f64.const 0.20121253213486293 - f64.add - f64.mul - f64.const -0.3255658186224009 - f64.add - f64.mul - f64.const 0.16666666666666666 - f64.add - f64.mul - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.const -0.6882839716054533 - f64.add - f64.mul - f64.const 2.0209457602335057 - f64.add - f64.mul - f64.const -2.403394911734414 - f64.add - f64.mul - f64.const 1 - f64.add - f64.div + local.get $1 + i32.const 127 + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + f32.mul + local.get $2 + f32.const 0 + call $std/math/check ) (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) (local $1 f64) @@ -559,7 +711,47 @@ local.get $0 local.get $0 f64.mul - call $~lib/math/R + local.tee $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div f64.mul f64.sub f64.sub @@ -570,18 +762,59 @@ i32.const 31 i32.shr_u if - f64.const 1.5707963267948966 local.get $0 f64.const 0.5 f64.mul f64.const 0.5 f64.add local.tee $0 - f64.sqrt - local.tee $1 local.get $0 - call $~lib/math/R + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + local.set $1 + f64.const 1.5707963267948966 + local.get $0 + f64.sqrt + local.tee $0 local.get $1 + local.get $0 f64.mul f64.const 6.123233995736766e-17 f64.sub @@ -597,25 +830,64 @@ f64.const 0.5 f64.mul f64.sub - local.tee $1 + local.tee $0 f64.sqrt local.tee $4 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $0 - local.get $1 - call $~lib/math/R - local.get $4 + local.tee $1 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 f64.mul - local.get $1 + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 local.get $0 local.get $0 + f64.const 0.07703815055590194 f64.mul - f64.sub + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div local.get $4 + f64.mul local.get $0 + local.get $1 + local.get $1 + f64.mul + f64.sub + local.get $4 + local.get $1 f64.add f64.div f64.add @@ -624,158 +896,172 @@ local.get $0 f64.add ) - (func $std/math/test_acos (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.acos - local.get $1 - local.get $2 - call $std/math/check - if (result i32) + (func $std/math/test_acosf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + (local $6 f32) + block $__inlined_func$~lib/math/NativeMathf.acos (result f32) local.get $0 - call $~lib/bindings/Math/acos - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/Rf (param $0 f32) (result f32) - local.get $0 - local.get $0 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - ) - (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 + i32.reinterpret_f32 + local.tee $5 + i32.const 2147483647 + i32.and + local.tee $4 i32.const 1065353216 - i32.eq + i32.ge_u if - local.get $3 - i32.const 31 - i32.shr_u + local.get $4 + i32.const 1065353216 + i32.eq if f32.const 3.141592502593994 - return + local.get $5 + i32.const 31 + i32.shr_u + br_if $__inlined_func$~lib/math/NativeMathf.acos + drop + f32.const 0 + br $__inlined_func$~lib/math/NativeMathf.acos end f32.const 0 - return + local.get $0 + local.get $0 + f32.sub + f32.div + br $__inlined_func$~lib/math/NativeMathf.acos end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 847249408 - i32.le_u + local.get $4 + i32.const 1056964608 + i32.lt_u if f32.const 1.570796251296997 - return + local.get $4 + i32.const 847249408 + i32.le_u + br_if $__inlined_func$~lib/math/NativeMathf.acos + drop + f32.const 1.570796251296997 + local.get $0 + f32.const 7.549789415861596e-08 + local.get $0 + local.get $0 + local.get $0 + f32.mul + local.tee $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f32.mul + f32.sub + f32.sub + f32.sub + br $__inlined_func$~lib/math/NativeMathf.acos end - f32.const 1.570796251296997 + local.get $5 + i32.const 31 + i32.shr_u + if + f32.const 1.570796251296997 + local.get $0 + f32.const 0.5 + f32.mul + f32.const 0.5 + f32.add + local.tee $0 + f32.sqrt + local.tee $3 + local.get $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + local.get $3 + f32.mul + f32.const 7.549789415861596e-08 + f32.sub + f32.add + f32.sub + local.tee $0 + local.get $0 + f32.add + br $__inlined_func$~lib/math/NativeMathf.acos + end + f32.const 0.5 local.get $0 - f32.const 7.549789415861596e-08 + f32.const 0.5 + f32.mul + f32.sub + local.tee $0 + f32.sqrt + local.tee $6 + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $3 local.get $0 local.get $0 local.get $0 + f32.const -0.008656363002955914 f32.mul - call $~lib/math/Rf + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add f32.mul - f32.sub - f32.sub - f32.sub - return - end - local.get $3 - i32.const 31 - i32.shr_u - if - f32.const 1.570796251296997 local.get $0 - f32.const 0.5 + f32.const -0.7066296339035034 f32.mul - f32.const 0.5 + f32.const 1 f32.add - local.tee $0 - f32.sqrt - local.tee $1 + f32.div + local.get $6 + f32.mul local.get $0 - call $~lib/math/Rf - local.get $1 + local.get $3 + local.get $3 f32.mul - f32.const 7.549789415861596e-08 f32.sub + local.get $6 + local.get $3 + f32.add + f32.div + f32.add f32.add - f32.sub local.tee $0 local.get $0 f32.add - return end - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.sub - local.tee $1 - f32.sqrt - local.tee $4 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $0 local.get $1 - call $~lib/math/Rf - local.get $4 - f32.mul - local.get $1 - local.get $0 - local.get $0 - f32.mul - f32.sub - local.get $4 - local.get $0 - f32.add - f32.div - f32.add - f32.add - local.tee $0 - local.get $0 - f32.add + local.get $2 + call $std/math/check ) (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) (local $1 f64) @@ -976,169 +1262,244 @@ f64.add ) (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 f64) (local $3 f64) - (local $4 f64) - (local $5 i32) - 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 + (local $4 i32) + (local $5 f64) + (local $6 i64) + (local $7 i32) + block $~lib/util/math/log_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $1 + i64.const 4606619468846596096 + i64.sub + i64.const 854320534781952 + i64.lt_u if - f64.const -1 local.get $0 + f64.const 1 + f64.sub + local.tee $0 local.get $0 f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if + local.tee $2 + local.get $0 + f64.mul + local.tee $3 + local.get $0 + f64.const -0.24999999999998432 + f64.mul + f64.const 0.3333333333333352 + f64.add + local.get $2 + f64.const 0.19999999999320328 + f64.mul + f64.add + local.get $3 + local.get $0 + f64.const 0.14285715076560868 + f64.mul + f64.const -0.16666666669929706 + f64.add + local.get $2 + f64.const -0.12499997863982555 + f64.mul + f64.add + local.get $3 + local.get $0 + f64.const -0.10000486757818193 + f64.mul + f64.const 0.11110712032936046 + f64.add + local.get $2 + f64.const 0.09181994006195467 + f64.mul + f64.add + local.get $3 + f64.const -0.08328363062289341 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.get $0 + local.get $0 local.get $0 local.get $0 + f64.const 134217728 + f64.mul + local.tee $2 + f64.add + local.get $2 f64.sub - f64.const 0 - f64.div - return + local.tee $2 + local.get $2 + f64.mul + f64.const -0.5 + f64.mul + local.tee $3 + f64.add + local.tee $5 + f64.sub + local.get $3 + f64.add + local.get $0 + local.get $2 + f64.sub + f64.const -0.5 + f64.mul + local.get $2 + local.get $0 + f64.add + f64.mul + f64.add + f64.add + local.get $5 + f64.add + br $~lib/util/math/log_lut|inlined.0 end - i32.const -54 - local.set $5 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 + local.get $1 + i64.const 48 i64.shr_u i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 + local.tee $4 + i32.const 16 + i32.sub + i32.const 32736 i32.ge_u if + f64.const -1 local.get $0 - return - else - local.get $2 - i64.const 32 + local.get $0 + f64.mul + f64.div + local.get $1 + i64.const 1 i64.shl i64.eqz - i32.const 0 + br_if $~lib/util/math/log_lut|inlined.0 + drop + local.get $0 local.get $1 - i32.const 1072693248 + i64.const 9218868437227405312 + i64.eq + br_if $~lib/util/math/log_lut|inlined.0 + drop + local.get $0 + local.get $0 + f64.sub + local.tee $2 + local.get $2 + f64.div + i32.const 1 + local.get $4 + i32.const 32752 + i32.and + i32.const 32752 i32.eq + local.get $4 + i32.const 32768 + i32.and select - if - f64.const 0 - return - end + br_if $~lib/util/math/log_lut|inlined.0 + drop + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 234187180623265792 + i64.sub + local.set $1 end - end - local.get $2 - 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 $3 - local.get $3 - f64.const 2 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $0 - local.get $4 - local.get $3 - f64.const 0.5 - f64.mul - local.get $3 - f64.mul - local.tee $4 - local.get $0 - local.get $0 - local.get $0 - 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 - local.get $5 - local.get $1 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - f64.add - local.get $4 - f64.sub - local.get $3 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add + local.get $1 + i64.const 4604367669032910848 + i64.sub + local.tee $6 + i64.const 45 + i64.shr_u + i64.const 127 + i64.and + i32.wrap_i64 + i32.const 4 + i32.shl + local.tee $7 + i32.const 3136 + i32.add + local.set $4 + local.get $1 + local.get $6 + i64.const -4503599627370496 + i64.and + i64.sub + f64.reinterpret_i64 + local.get $4 + f64.load + f64.sub + local.get $4 + f64.load offset=8 + f64.sub + local.get $7 + i32.const 1088 + i32.add + local.tee $4 + f64.load + f64.mul + local.set $0 + local.get $6 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.tee $3 + f64.const 0.6931471805598903 + f64.mul + local.get $4 + f64.load offset=8 + f64.add + local.tee $5 + local.get $0 + f64.add + local.set $2 + local.get $5 + local.get $2 + f64.sub + local.get $0 + f64.add + local.get $3 + f64.const 5.497923018708371e-14 + f64.mul + f64.add + local.get $0 + local.get $0 + f64.mul + local.tee $3 + f64.const -0.5000000000000001 + f64.mul + f64.add + local.get $0 + local.get $3 + f64.mul + local.get $0 + f64.const -0.2499999999622955 + f64.mul + f64.const 0.33333333331825593 + f64.add + local.get $3 + local.get $0 + f64.const -0.16667054827627667 + f64.mul + f64.const 0.20000304511814496 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.get $2 + f64.add + end ) (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) @@ -1381,134 +1742,114 @@ ) (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8388608 - i32.lt_u - select - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz + (local $2 f64) + (local $3 i32) + (local $4 f64) + (local $5 f32) + (local $6 i32) + block $~lib/util/math/logf_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $1 + i32.const 8388608 + i32.sub + i32.const 2130706432 + i32.ge_u if - f32.const -1 - local.get $0 + f32.const -inf + local.get $1 + i32.const 1 + i32.shl + i32.eqz + br_if $~lib/util/math/logf_lut|inlined.0 + drop local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if + local.get $1 + i32.const 2139095040 + i32.eq + br_if $~lib/util/math/logf_lut|inlined.0 + drop local.get $0 local.get $0 f32.sub - f32.const 0 + local.tee $5 + local.get $5 f32.div - return + i32.const 1 + local.get $1 + i32.const 1 + i32.shl + i32.const -16777216 + i32.ge_u + local.get $1 + i32.const 31 + i32.shr_u + select + br_if $~lib/util/math/logf_lut|inlined.0 + drop + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 192937984 + i32.sub + local.set $1 end - i32.const -25 + local.get $1 + i32.const 1060306944 + i32.sub + local.tee $3 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + local.set $6 + local.get $1 + local.get $3 + i32.const -8388608 + i32.and + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $6 + i32.const 4 + i32.shl + i32.const 5184 + i32.add + local.tee $1 + f64.load + f64.mul + f64.const 1 + f64.sub + local.tee $2 + local.get $2 + f64.mul local.set $4 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else + local.get $2 + f64.const 0.333456765744066 + f64.mul + f64.const -0.4999997485802103 + f64.add + local.get $4 + f64.const -0.25089342214237154 + f64.mul + f64.add + local.get $4 + f64.mul local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end + f64.load offset=8 + local.get $3 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.const 0.6931471805599453 + f64.mul + f64.add + local.get $2 + f64.add + f64.add + f32.demote_f64 end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - f32.const 2 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $3 - local.get $0 - f32.const 0.5 - f32.mul - local.get $0 - f32.mul - local.tee $3 - local.get $2 - local.get $2 - local.get $2 - f32.mul - local.tee $2 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $2 - local.get $2 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul - f32.add - f32.add - f32.mul - local.get $4 - local.get $1 - i32.const 23 - i32.shr_s - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - local.tee $2 - f32.const 9.05800061445916e-06 - f32.mul - f32.add - local.get $3 - f32.sub - local.get $0 - f32.add - local.get $2 - f32.const 0.6931381225585938 - f32.mul - f32.add ) (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) @@ -1626,7 +1967,47 @@ local.get $0 local.get $0 f64.mul - call $~lib/math/R + local.tee $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div f64.mul f64.add return @@ -1637,19 +2018,58 @@ f64.const 0.5 f64.mul f64.sub - local.tee $1 + local.tee $0 f64.sqrt - local.set $0 - local.get $1 - call $~lib/math/R + local.set $1 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div local.set $3 local.get $2 i32.const 1072640819 i32.ge_u if (result f64) f64.const 1.5707963267948966 - local.get $0 - local.get $0 + local.get $1 + local.get $1 local.get $3 f64.mul f64.add @@ -1661,34 +2081,34 @@ f64.sub else f64.const 0.7853981633974483 - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.add local.get $3 f64.mul f64.const 6.123233995736766e-17 - local.get $1 local.get $0 + local.get $1 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 f64.mul f64.sub - local.get $0 local.get $1 + local.get $0 f64.add f64.div - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 f64.add f64.sub f64.sub f64.const 0.7853981633974483 - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.add f64.sub f64.sub @@ -1705,26 +2125,10 @@ end local.get $0 ) - (func $std/math/test_asin (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.asin - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/asin - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) (func $std/math/test_asinf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) - (local $4 f64) - (local $5 f32) + (local $4 f32) + (local $5 f64) block $__inlined_func$~lib/math/NativeMathf.asin local.get $0 i32.reinterpret_f32 @@ -1772,7 +2176,23 @@ local.get $0 local.get $0 f32.mul - call $~lib/math/Rf + local.tee $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div f32.mul f32.add local.set $0 @@ -1785,18 +2205,33 @@ f32.const 0.5 f32.mul f32.sub - local.tee $5 + local.tee $4 f64.promote_f32 f64.sqrt - local.tee $4 - local.get $4 + local.tee $5 local.get $5 - call $~lib/math/Rf + local.get $4 + local.get $4 + local.get $4 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $4 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div f64.promote_f32 f64.mul f64.add - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f64.add f64.sub f32.demote_f64 @@ -1896,18 +2331,17 @@ (local $3 f32) (local $4 i32) local.get $0 - local.tee $3 i32.reinterpret_f32 i32.const 2147483647 i32.and local.tee $4 f32.reinterpret_i32 - local.set $0 + local.set $3 local.get $4 i32.const 1166016512 i32.ge_u if (result f32) - local.get $0 + local.get $3 call $~lib/math/NativeMathf.log f32.const 0.6931471824645996 f32.add @@ -1916,17 +2350,17 @@ i32.const 1073741824 i32.ge_u if (result f32) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f32.add f32.const 1 - local.get $0 - local.get $0 + local.get $3 + local.get $3 f32.mul f32.const 1 f32.add f32.sqrt - local.get $0 + local.get $3 f32.add f32.div f32.add @@ -1936,12 +2370,12 @@ i32.const 964689920 i32.ge_u if (result f32) - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 + local.get $3 f32.mul - local.tee $0 - local.get $0 + local.tee $3 + local.get $3 f32.const 1 f32.add f32.sqrt @@ -1951,11 +2385,11 @@ f32.add call $~lib/math/NativeMathf.log1p else - local.get $0 + local.get $3 end end end - local.get $3 + local.get $0 f32.copysign local.get $1 local.get $2 @@ -2180,22 +2614,6 @@ local.get $1 f64.copysign ) - (func $std/math/test_atan (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.atan - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/atan - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) (local $1 f32) (local $2 f32) @@ -2460,10 +2878,9 @@ (local $3 f32) (local $4 i32) local.get $0 - local.tee $3 f32.abs - local.set $0 - local.get $3 + local.set $3 + local.get $0 i32.reinterpret_f32 local.tee $4 i32.const 1056964608 @@ -2473,12 +2890,12 @@ i32.const 796917760 i32.ge_u if (result f32) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f32.add - local.get $0 + local.get $3 f32.const 1 - local.get $0 + local.get $3 f32.sub f32.div f32.const 1 @@ -2488,242 +2905,247 @@ f32.const 0.5 f32.mul else - local.get $0 + local.get $3 end else - local.get $0 + local.get $3 f32.const 1 - local.get $0 + local.get $3 f32.sub f32.div - local.tee $0 - local.get $0 + local.tee $3 + local.get $3 f32.add call $~lib/math/NativeMathf.log1p f32.const 0.5 f32.mul end - local.get $3 + local.get $0 f32.copysign local.get $1 local.get $2 call $std/math/check ) - (func $~lib/math/NativeMath.atan2 (param $0 f64) (param $1 f64) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + (local $4 f64) (local $5 i32) - (local $6 i64) + (local $6 i32) (local $7 i32) - i32.const 1 - local.get $0 - local.get $0 - f64.ne - local.get $1 + (local $8 i64) + (local $9 i32) + (local $10 i32) 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 - 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 + block $__inlined_func$~lib/math/NativeMath.atan2 + i32.const 1 local.get $0 - 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 + 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 i32.eqz - br_if $case0|0 + br_if $__inlined_func$~lib/math/NativeMath.atan2 block $tablify|0 - local.get $2 + local.get $5 i32.const 1 i32.sub - br_table $case0|0 $case2|0 $case3|0 $tablify|0 + br_table $__inlined_func$~lib/math/NativeMath.atan2 $case2|0 $case3|0 $tablify|0 end br $break|0 end - local.get $0 - return + f64.const 3.141592653589793 + local.set $1 + br $__inlined_func$~lib/math/NativeMath.atan2 end - f64.const 3.141592653589793 - return + f64.const -3.141592653589793 + local.set $1 + br $__inlined_func$~lib/math/NativeMath.atan2 end - f64.const -3.141592653589793 - return end - 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 - f64.const 2.356194490192345 - f64.const 0.7853981633974483 - local.get $2 - i32.const 2 - i32.and - select - f64.const 3.141592653589793 - f64.const 0 - local.get $2 - i32.const 2 - i32.and - select - local.get $4 + block $folding-inner0 + local.get $7 + local.get $10 + i32.or + i32.eqz + br_if $folding-inner0 + local.get $7 i32.const 2146435072 i32.eq - select - local.tee $0 - f64.neg - local.get $0 - local.get $2 + 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 + i32.and + select + local.set $1 + br $__inlined_func$~lib/math/NativeMath.atan2 + end 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 - 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 + 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 end - local.get $0 - return + local.get $1 + f64.neg + local.set $1 + br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $0 - f64.neg - return + 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 end - f64.const 3.141592653589793 - local.get $0 + local.get $1 f64.const 1.2246467991473532e-16 f64.sub + f64.const 3.141592653589793 f64.sub - return + local.set $1 + br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $0 - f64.const 1.2246467991473532e-16 - f64.sub - f64.const 3.141592653589793 - f64.sub - return + unreachable end - unreachable + f64.const -1.5707963267948966 + f64.const 1.5707963267948966 + local.get $5 + i32.const 1 + i32.and + select + local.set $1 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 $1 + local.get $4 call $~lib/bindings/Math/atan2 local.get $2 local.get $3 @@ -2732,150 +3154,161 @@ i32.const 0 end ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) + (func $std/math/test_atan2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) (local $4 i32) (local $5 i32) - i32.const 1 - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - select - if - local.get $1 + (local $6 i32) + block $__inlined_func$~lib/math/NativeMathf.atan2 + i32.const 1 local.get $0 - f32.add - return - end - local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 1065353216 - i32.eq - if local.get $0 - call $~lib/math/NativeMathf.atan - return - end - local.get $3 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $0 - i32.reinterpret_f32 - local.tee $5 - i32.const 31 - i32.shr_u - i32.or - local.set $2 - local.get $3 - i32.const 2147483647 - i32.and - local.set $4 - local.get $5 - i32.const 2147483647 - i32.and - local.tee $3 - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - local.get $2 - i32.eqz - local.get $2 - i32.const 1 - i32.eq - i32.or - i32.eqz - if - local.get $2 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $2 - i32.const 3 - i32.eq - br_if $case3|0 + f32.ne + local.get $1 + local.get $1 + f32.ne + select + if + local.get $1 + local.get $0 + f32.add + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.atan2 + end + local.get $0 + i32.reinterpret_f32 + local.set $5 + local.get $1 + i32.reinterpret_f32 + local.tee $6 + i32.const 1065353216 + i32.eq + if + local.get $0 + call $~lib/math/NativeMathf.atan + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.atan2 + end + local.get $6 + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + local.get $5 + i32.const 31 + i32.shr_u + i32.or + local.set $4 + local.get $6 + i32.const 2147483647 + i32.and + local.set $6 + local.get $5 + i32.const 2147483647 + i32.and + local.tee $5 + 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 + end br $break|0 end - local.get $0 - return + f32.const 3.1415927410125732 + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.atan2 end - f32.const 3.1415927410125732 - return + f32.const -3.1415927410125732 + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.atan2 end - f32.const -3.1415927410125732 - return end - end - block $folding-inner0 - local.get $4 + local.get $6 i32.eqz - br_if $folding-inner0 - local.get $4 + 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 i32.const 2139095040 i32.eq if - local.get $3 + local.get $5 i32.const 2139095040 i32.eq - if + if (result f32) f32.const 2.356194496154785 f32.const 0.7853981852531433 - local.get $2 + local.get $4 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $2 + local.get $4 i32.const 1 i32.and select - return else f32.const 3.1415927410125732 f32.const 0 - local.get $2 + local.get $4 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $2 + local.get $4 i32.const 1 i32.and select - return end - unreachable + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.atan2 end i32.const 1 - local.get $3 + local.get $5 i32.const 2139095040 i32.eq - local.get $3 - local.get $4 + local.get $5 + local.get $6 i32.const 218103808 i32.add i32.gt_u select - br_if $folding-inner0 - local.get $4 - local.get $3 + 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 i32.const 218103808 i32.add i32.gt_u i32.const 0 - local.get $2 + local.get $4 i32.const 2 i32.and select @@ -2893,169 +3326,168 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $2 - local.tee $3 + local.get $4 if - local.get $3 + local.get $4 i32.const 1 i32.sub br_table $case1|1 $case2|1 $case3|1 $break|1 end - local.get $0 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end local.get $0 f32.neg - return + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.atan2 end f32.const 3.1415927410125732 local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.sub - return + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.atan2 end local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.const 3.1415927410125732 f32.sub - return + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.atan2 end unreachable end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 + local.get $0 local.get $2 - i32.const 1 - i32.and - select + local.get $3 + call $std/math/check ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) + (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.add - return - end - local.get $2 - i32.const 1048576 - i32.lt_u - if (result i32) + (local $4 f64) + (local $5 i32) + (local $6 f64) + (local $7 i64) + block $__inlined_func$~lib/math/NativeMath.cbrt local.get $0 - f64.const 18014398509481984 - f64.mul + local.tee $3 i64.reinterpret_f64 - local.tee $4 + local.tee $7 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $2 - i32.eqz + local.tee $5 + i32.const 2146435072 + i32.ge_u if - local.get $0 - return + local.get $3 + local.get $3 + f64.add + local.set $3 + br $__inlined_func$~lib/math/NativeMath.cbrt end - local.get $2 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $2 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add + local.get $5 + i32.const 1048576 + i32.lt_u + if (result i32) + local.get $3 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $7 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $5 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMath.cbrt + local.get $5 + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + else + local.get $5 + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add + end + local.set $5 + local.get $7 + i64.const -9223372036854775808 + i64.and + local.get $5 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $6 + local.get $6 + f64.mul + local.get $6 + local.get $3 + f64.div + f64.mul + local.set $4 + local.get $3 + local.get $6 + local.get $4 + local.get $4 + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $4 + local.get $4 + f64.mul + local.get $4 + f64.mul + local.get $4 + f64.const 0.14599619288661245 + f64.mul + f64.const -0.758397934778766 + f64.add + f64.mul + f64.add + f64.mul + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.tee $3 + local.get $3 + f64.mul + f64.div + local.set $4 + local.get $3 + local.get $3 + local.get $4 + local.get $3 + f64.sub + local.get $3 + local.get $3 + f64.add + local.get $4 + f64.add + f64.div + f64.mul + f64.add + local.set $3 end - local.set $2 - local.get $4 - i64.const -9223372036854775808 - i64.and - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $1 - local.get $0 local.get $3 local.get $1 - local.get $1 - f64.const 1.6214297201053545 - f64.mul - f64.const -1.8849797954337717 - f64.add - f64.mul - f64.const 1.87595182427177 - f64.add - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.get $1 - f64.const 0.14599619288661245 - f64.mul - f64.const -0.758397934778766 - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.mul - f64.div - local.set $1 - local.get $0 - local.get $0 - local.get $1 - local.get $0 - f64.sub - local.get $0 - local.get $0 - f64.add - local.get $1 - f64.add - f64.div - f64.mul - f64.add - ) - (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.cbrt - local.get $1 local.get $2 call $std/math/check if (result i32) @@ -3068,120 +3500,106 @@ i32.const 0 end ) - (func $~lib/math/NativeMathf.cbrt (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 + (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f64) + (local $4 f64) + (local $5 i32) + (local $6 f64) + (local $7 i32) + (local $8 f64) + block $__inlined_func$~lib/math/NativeMathf.cbrt local.get $0 - f32.add - return - end - local.get $3 - i32.const 8388608 - i32.lt_u - if (result i32) - local.get $3 - i32.eqz + i32.reinterpret_f32 + local.tee $7 + i32.const 2147483647 + i32.and + local.tee $5 + i32.const 2139095040 + i32.ge_u if local.get $0 - return + local.get $0 + f32.add + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.cbrt + end + local.get $5 + i32.const 8388608 + i32.lt_u + if (result i32) + local.get $5 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.cbrt + local.get $0 + f32.const 16777216 + f32.mul + i32.reinterpret_f32 + local.tee $7 + i32.const 2147483647 + i32.and + i32.const 3 + i32.div_u + i32.const 642849266 + i32.add + else + local.get $5 + i32.const 3 + i32.div_u + i32.const 709958130 + i32.add end + local.get $7 + i32.const -2147483648 + i32.and + i32.or + f32.reinterpret_i32 + f64.promote_f32 + local.tee $3 + local.get $3 + f64.mul + local.get $3 + f64.mul + local.set $4 + local.get $3 local.get $0 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 + f64.promote_f32 + local.tee $3 + local.get $3 + f64.add + local.tee $8 + local.get $4 + f64.add + f64.mul + local.get $3 + local.get $4 + f64.add + local.get $4 + f64.add + f64.div local.tee $4 - i32.const 2147483647 - i32.and - i32.const 3 - i32.div_u - i32.const 642849266 - i32.add - else + local.get $4 + f64.mul + local.get $4 + f64.mul + local.set $6 + local.get $4 + local.get $8 + local.get $6 + f64.add + f64.mul local.get $3 - i32.const 3 - i32.div_u - i32.const 709958130 - i32.add + local.get $6 + f64.add + local.get $6 + f64.add + f64.div + f32.demote_f64 + local.set $0 end - local.get $4 - i32.const -2147483648 - i32.and - i32.or - f32.reinterpret_i32 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.set $2 - local.get $1 local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $2 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $2 - f64.add - local.get $2 - f64.add - f64.div - local.tee $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.set $2 local.get $1 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $2 - f64.add - f64.mul - local.get $0 - f64.promote_f32 local.get $2 - f64.add - local.get $2 - f64.add - f64.div - f32.demote_f64 - ) - (func $std/math/test_ceil (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.ceil - local.get $1 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/ceil - local.get $1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/check ) (func $~lib/math/pio2_large_quot (param $0 i64) (result i32) (local $1 i64) @@ -3209,7 +3627,7 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 1088 + i32.const 5440 i32.add local.tee $7 i64.load @@ -3477,7 +3895,8 @@ (local $4 f64) (local $5 i32) (local $6 i32) - (local $7 f64) + (local $7 i32) + (local $8 f64) local.get $0 i64.reinterpret_f64 local.tee $2 @@ -3571,11 +3990,89 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 - i32.const 1094263291 + local.tee $7 + i32.const 1073928572 i32.lt_u if + i32.const 1 + local.set $5 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $5 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $3 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $3 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const 1.5707963267341256 + f64.sub + local.set $0 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.sub + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.sub + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.sub + local.tee $3 + f64.const 2.0222662487959506e-21 + f64.sub + local.set $0 + local.get $3 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.sub + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 local.get $5 + br $~lib/math/rempio2|inlined.0 + end + local.get $7 + i32.const 1094263291 + i32.lt_u + if + local.get $7 i32.const 20 i32.shr_u local.tee $6 @@ -3748,9 +4245,9 @@ f64.mul local.tee $1 f64.sub - local.tee $7 + local.tee $8 f64.const 1 - local.get $7 + local.get $8 f64.sub local.get $1 f64.sub @@ -3801,287 +4298,455 @@ i32.and select ) - (func $std/math/test_cos (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.cos - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/cos - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 f64) + (local $3 i64) + (local $4 i32) (local $5 i64) (local $6 i64) (local $7 i64) (local $8 i64) (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $10 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if + (local $10 f64) + (local $11 f64) + (local $12 f64) + block $folding-inner0 + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_u + local.set $9 local.get $2 - i32.const 964689920 - i32.lt_u + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1061752794 + i32.le_u if - f32.const 1 - return + local.get $1 + i32.const 964689920 + i32.lt_u + if + f32.const 1 + return + end + local.get $0 + f64.promote_f32 + local.tee $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + br $folding-inner0 end - local.get $0 - f64.promote_f32 - local.tee $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $2 - i32.const 1305022427 - i32.lt_u + local.get $1 + i32.const 1081824209 + i32.le_u + if + local.get $1 + i32.const 1075235811 + i32.gt_u + if + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 3.141592653589793 + f64.add + local.get $12 + f64.const 3.141592653589793 + f64.sub + local.get $9 + select + local.tee $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + local.get $11 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $12 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $12 + local.get $11 + f64.mul + local.get $11 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + return + else + local.get $9 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $11 + local.get $11 + f64.mul + local.tee $10 + local.get $11 + f64.mul + else + f64.const 1.5707963267948966 + local.get $0 + f64.promote_f32 + f64.sub + local.tee $11 + local.get $11 + f64.mul + local.tee $10 + local.get $11 + f64.mul + end + local.set $12 + local.get $11 + local.get $12 + local.get $10 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $12 + local.get $10 + local.get $10 + f64.mul + f64.mul + local.get $10 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + unreachable + end + local.get $1 + i32.const 1088565717 + i32.le_u + if + local.get $1 + i32.const 1085271519 + i32.gt_u + if + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 6.283185307179586 + f64.add + local.get $12 + f64.const 6.283185307179586 + f64.sub + local.get $9 + select + local.tee $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + br $folding-inner0 + else + local.get $9 + if (result f64) + local.get $0 + f32.neg + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.tee $11 + local.get $11 + f64.mul + local.tee $10 + local.get $11 + f64.mul + else + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.tee $11 + local.get $11 + f64.mul + local.tee $10 + local.get $11 + f64.mul + end + local.set $12 + local.get $11 + local.get $12 + local.get $10 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $12 + local.get $10 + local.get $10 + f64.mul + f64.mul + local.get $10 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + unreachable + end + local.get $1 + i32.const 2139095040 + i32.ge_u if local.get $0 - f64.promote_f32 local.get $0 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.0 + f32.sub + return end - local.get $2 - i32.const 23 - i32.shr_u - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1280 - i32.add - local.tee $9 - i64.load - local.set $6 - local.get $9 - i64.load offset=8 - local.set $7 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $5 - i64.const 32 - i64.gt_u - if (result i64) - local.get $7 - local.get $5 + block $~lib/math/rempio2f|inlined.0 (result i32) + local.get $1 + local.tee $2 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $11 + local.get $12 + local.get $11 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $11 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $11 + i32.trunc_f64_s + br $~lib/math/rempio2f|inlined.0 + end + local.get $2 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $2 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $4 + i64.load + local.set $7 + local.get $4 + i64.load offset=8 + local.set $6 + local.get $2 + i32.const 63 + i32.and + i64.extend_i32_s + local.tee $8 i64.const 32 - i64.sub + i64.gt_u + if (result i64) + local.get $6 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $4 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $6 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.set $3 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $5 + local.get $7 + local.get $8 i64.shl - local.get $9 - i64.load offset=16 - i64.const 96 - local.get $5 + local.get $6 + i64.const 64 + local.get $8 i64.sub i64.shr_u i64.or - else - local.get $7 + i64.mul + local.get $3 + local.get $5 + i64.mul i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 2 + i64.shl + local.tee $5 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $7 + i64.const 62 + i64.shr_u local.get $5 - i64.sub + i64.const 63 i64.shr_u + i64.add + i32.wrap_i64 + local.tee $2 + i32.sub + local.get $2 + local.get $9 + select + end + local.set $2 + global.get $~lib/math/rempio2f_y + local.set $12 + local.get $2 + i32.const 1 + i32.and + if (result f32) + local.get $12 + local.get $12 + local.get $12 + f64.mul + local.tee $11 + local.get $12 + f64.mul + local.tee $12 + local.get $11 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $12 + local.get $11 + local.get $11 + f64.mul + f64.mul + local.get $11 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + local.get $11 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $12 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $12 + local.get $11 + f64.mul + local.get $11 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 end - local.set $11 - f64.const 8.515303950216386e-20 + local.tee $0 + f32.neg local.get $0 - f64.promote_f32 - f64.copysign local.get $2 - i32.const 8388607 + i32.const 1 + i32.add + i32.const 2 i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $8 - local.get $6 - local.get $5 - i64.shl - local.get $7 - i64.const 64 - local.get $5 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $6 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $6 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $10 select + return end - local.set $1 - global.get $~lib/math/rempio2f_y - local.set $3 - local.get $1 - i32.const 1 - i32.and - if (result f32) - local.get $3 - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $3 - f64.mul - local.tee $3 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - f64.mul - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.tee $0 - f32.neg - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.and - select + local.get $11 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $12 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $12 + local.get $11 + f64.mul + local.get $11 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 ) (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) (local $1 f64) @@ -4356,153 +5021,219 @@ f64.mul ) (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 31 - i32.shr_u - local.set $6 - local.get $2 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1082532651 - i32.ge_u - if - local.get $0 + (local $1 i32) + (local $2 f64) + (local $3 i64) + (local $4 f64) + (local $5 i64) + (local $6 f64) + (local $7 i32) + (local $8 f64) + block $~lib/util/math/exp_lut|inlined.0 (result f64) local.get $0 - f64.ne + local.tee $2 + i64.reinterpret_f64 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + i32.wrap_i64 + local.tee $1 + i32.const 969 + i32.sub + i32.const 63 + i32.ge_u if - local.get $0 - return + f64.const 1 + local.get $1 + i32.const 969 + i32.sub + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp_lut|inlined.0 + drop + local.get $1 + i32.const 1033 + i32.ge_u + if + f64.const 0 + local.get $3 + i64.const -4503599627370496 + i64.eq + br_if $~lib/util/math/exp_lut|inlined.0 + drop + local.get $2 + f64.const 1 + f64.add + local.get $1 + i32.const 2047 + i32.ge_u + br_if $~lib/util/math/exp_lut|inlined.0 + drop + f64.const 0 + f64.const inf + local.get $3 + i64.const 63 + i64.shr_u + i32.wrap_i64 + select + br $~lib/util/math/exp_lut|inlined.0 + end + i32.const 0 + local.set $1 end + local.get $2 + f64.const 184.6649652337873 + f64.mul + f64.const 6755399441055744 + f64.add + local.tee $4 + f64.const 6755399441055744 + f64.sub + local.set $0 + local.get $4 + i64.reinterpret_f64 + local.tee $5 + i64.const 127 + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5664 + i32.add + local.tee $7 + i64.load offset=8 + local.get $5 + i64.const 45 + i64.shl + i64.add + local.set $3 + local.get $2 local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end + f64.const -0.005415212348111709 + f64.mul + f64.add local.get $0 - f64.const -745.1332191019411 - f64.lt - if - f64.const 0 - return - end - end - local.get $2 - i32.const 1071001154 - i32.gt_u - if + f64.const -1.2864023111638346e-14 + f64.mul + f64.add + local.tee $0 + local.get $0 + f64.mul + local.set $2 + local.get $7 + i64.load + f64.reinterpret_i64 local.get $0 + f64.add local.get $2 - i32.const 1072734898 - i32.ge_u - if (result i32) - local.get $0 - f64.const 1.4426950408889634 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - else - i32.const 1 - local.get $6 - i32.const 1 - i32.shl - i32.sub - end - local.tee $4 - f64.convert_i32_s - f64.const 0.6931471803691238 + local.get $0 + f64.const 0.16666666666665886 f64.mul - f64.sub - local.tee $1 - local.get $4 - f64.convert_i32_s - f64.const 1.9082149292705877e-10 + f64.const 0.49999999999996786 + f64.add f64.mul - local.tee $7 - f64.sub - local.set $0 - else + f64.add local.get $2 - i32.const 1043333120 - i32.gt_u - if (result f64) - local.get $0 - else - local.get $0 - f64.const 1 - f64.add - return - end - local.set $1 - end - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $3 - f64.mul - local.set $5 - local.get $0 - local.get $0 - local.get $3 - f64.const 0.16666666666666602 - f64.mul - local.get $5 - local.get $3 - f64.const 6.613756321437934e-05 - f64.mul - f64.const -2.7777777777015593e-03 - f64.add - local.get $5 - local.get $3 - f64.const 4.1381367970572385e-08 - f64.mul - f64.const -1.6533902205465252e-06 - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.sub - local.tee $0 - f64.mul - f64.const 2 - local.get $0 - f64.sub - f64.div - local.get $7 - f64.sub - local.get $1 - f64.add - f64.const 1 - f64.add - local.set $0 - local.get $4 - if (result f64) + local.get $2 + f64.mul local.get $0 - local.get $4 - call $~lib/math/NativeMath.scalbn - else + f64.const 0.008333335853059549 + f64.mul + f64.const 0.0416666808410674 + f64.add + f64.mul + f64.add + local.set $0 + local.get $1 + i32.eqz + if + block $~lib/util/math/specialcase|inlined.0 (result f64) + local.get $5 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $3 + i64.const 4544132024016830464 + i64.sub + f64.reinterpret_i64 + local.tee $2 + local.get $2 + local.get $0 + f64.mul + f64.add + f64.const 5486124068793688683255936e279 + f64.mul + br $~lib/util/math/specialcase|inlined.0 + end + local.get $3 + i64.const 4602678819172646912 + i64.add + local.tee $3 + f64.reinterpret_i64 + local.tee $4 + local.get $4 + local.get $0 + f64.mul + f64.add + local.tee $2 + f64.abs + f64.const 1 + f64.lt + if (result f64) + f64.const 1 + local.get $2 + f64.copysign + local.tee $6 + local.get $2 + f64.add + local.tee $8 + local.get $6 + local.get $8 + f64.sub + local.get $2 + f64.add + local.get $4 + local.get $2 + f64.sub + local.get $4 + local.get $0 + f64.mul + f64.add + f64.add + f64.add + local.get $6 + f64.sub + local.tee $2 + f64.const 0 + f64.eq + if (result f64) + local.get $3 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + else + local.get $2 + end + else + local.get $2 + end + f64.const 2.2250738585072014e-308 + f64.mul + end + br $~lib/util/math/exp_lut|inlined.0 + end + local.get $3 + f64.reinterpret_i64 + local.tee $2 + local.get $2 local.get $0 + f64.mul + f64.add end ) (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) @@ -4833,136 +5564,98 @@ f32.mul ) (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) + (local $1 f64) + (local $2 f64) (local $3 i32) (local $4 i32) - (local $5 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_u - local.set $4 - local.get $2 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1118743632 - i32.ge_u - if - local.get $2 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $2 - i32.const 1118925336 + (local $5 i64) + block $~lib/util/math/expf_lut|inlined.0 (result f32) + local.get $0 + f64.promote_f32 + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + local.tee $4 + i32.const 1067 i32.ge_u if - local.get $4 - if - local.get $2 - i32.const 1120924085 - i32.ge_u - if - f32.const 0 - return - end - else - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - return - end - end - end - local.get $2 - i32.const 1051816472 - i32.gt_u - if - local.get $0 - local.get $2 - i32.const 1065686418 - i32.gt_u - if (result i32) + f32.const 0 + local.get $3 + i32.const -8388608 + i32.eq + br_if $~lib/util/math/expf_lut|inlined.0 + drop local.get $0 - f32.const 1.4426950216293335 - f32.mul - f32.const 0.5 local.get $0 - f32.copysign f32.add - i32.trunc_f32_s - else - i32.const 1 local.get $4 - i32.const 1 - i32.shl - i32.sub - end - local.tee $3 - f32.convert_i32_s - f32.const 0.693145751953125 - f32.mul - f32.sub - local.tee $1 - local.get $3 - f32.convert_i32_s - f32.const 1.428606765330187e-06 - f32.mul - local.tee $5 - f32.sub - local.set $0 - else - local.get $2 - i32.const 956301312 - i32.gt_u - if (result f32) + i32.const 2040 + i32.ge_u + br_if $~lib/util/math/expf_lut|inlined.0 + drop local.get $0 - else + f32.const 1701411834604692317316873e14 + f32.mul local.get $0 - f32.const 1 - f32.add - return + f32.const 88.72283172607422 + f32.gt + br_if $~lib/util/math/expf_lut|inlined.0 + drop + f32.const 0 + local.get $0 + f32.const -103.97207641601562 + f32.lt + br_if $~lib/util/math/expf_lut|inlined.0 + drop end - local.set $1 - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - local.get $0 - f32.const -2.7667332906275988e-03 - f32.mul - f32.const 0.16666625440120697 - f32.add - f32.mul - f32.sub - local.tee $0 - f32.mul - f32.const 2 - local.get $0 - f32.sub - f32.div - local.get $5 - f32.sub - local.get $1 - f32.add - f32.const 1 - f32.add - local.set $0 - local.get $3 - if (result f32) - local.get $0 - local.get $3 - call $~lib/math/NativeMathf.scalbn - else - local.get $0 + f64.const 46.16624130844683 + f64.mul + local.tee $1 + f64.const 6755399441055744 + f64.add + local.set $2 + local.get $1 + local.get $2 + f64.const 6755399441055744 + f64.sub + f64.sub + local.tee $1 + f64.const 0.021660849396613134 + f64.mul + f64.const 1 + f64.add + local.get $1 + f64.const 1.6938359250920212e-06 + f64.mul + f64.const 2.3459809789509004e-04 + f64.add + local.get $1 + local.get $1 + f64.mul + f64.mul + f64.add + local.get $2 + i64.reinterpret_f64 + local.tee $5 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $5 + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 + f64.mul + f32.demote_f64 end ) (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) @@ -5028,118 +5721,87 @@ local.get $2 call $std/math/check ) - (func $std/math/test_exp (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.exp - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/exp - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_expm1 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.expm1 - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/expm1 - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMath.exp2 (param $0 f64) (result f64) - (local $1 i32) - (local $2 f64) - (local $3 i64) + (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) (local $4 f64) (local $5 i64) - (local $6 i32) + (local $6 f64) (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 $2 + local.tee $4 i64.reinterpret_f64 - local.tee $3 + local.tee $5 i64.const 52 i64.shr_u i64.const 2047 i64.and i32.wrap_i64 - local.tee $1 + local.tee $3 i32.const 969 i32.sub i32.const 63 i32.ge_u if f64.const 1 - local.get $1 + local.get $3 i32.const 969 i32.sub i32.const -2147483648 i32.ge_u br_if $~lib/util/math/exp2_lut|inlined.0 drop - local.get $1 + local.get $3 i32.const 1033 i32.ge_u if f64.const 0 - local.get $3 + local.get $5 i64.const -4503599627370496 i64.eq br_if $~lib/util/math/exp2_lut|inlined.0 drop - local.get $2 + local.get $4 f64.const 1 f64.add - local.get $1 + local.get $3 i32.const 2047 i32.ge_u br_if $~lib/util/math/exp2_lut|inlined.0 drop f64.const inf - local.get $3 + local.get $5 i64.const 63 i64.shr_u i64.eqz br_if $~lib/util/math/exp2_lut|inlined.0 drop f64.const 0 - local.get $3 + local.get $5 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 $1 + local.set $3 end - local.get $2 + local.get $4 f64.const 52776558133248 f64.add local.tee $0 i64.reinterpret_f64 - local.tee $5 + local.tee $8 i64.const 127 i64.and i64.const 1 @@ -5147,16 +5809,16 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 1312 + i32.const 5664 i32.add - local.tee $6 + local.tee $9 i64.load offset=8 - local.get $5 + local.get $8 i64.const 45 i64.shl i64.add - local.set $3 - local.get $2 + local.set $5 + local.get $4 local.get $0 f64.const 52776558133248 f64.sub @@ -5164,15 +5826,15 @@ local.tee $0 local.get $0 f64.mul - local.set $2 - local.get $6 + local.set $6 + local.get $9 i64.load f64.reinterpret_i64 local.get $0 f64.const 0.6931471805599453 f64.mul f64.add - local.get $2 + local.get $6 local.get $0 f64.const 0.0555041086686087 f64.mul @@ -5180,8 +5842,8 @@ f64.add f64.mul f64.add - local.get $2 - local.get $2 + local.get $6 + local.get $6 f64.mul local.get $0 f64.const 1.3332074570119598e-03 @@ -5190,57 +5852,57 @@ f64.add f64.mul f64.add - local.set $0 - local.get $1 + local.set $6 + local.get $3 i32.eqz if block $~lib/util/math/specialcase2|inlined.0 (result f64) - local.get $5 + local.get $8 i64.const 2147483648 i64.and i64.eqz if - local.get $3 + local.get $5 i64.const 4503599627370496 i64.sub f64.reinterpret_i64 - local.tee $2 - local.get $0 + local.tee $0 + local.get $6 f64.mul - local.get $2 + local.get $0 f64.add local.tee $0 local.get $0 f64.add br $~lib/util/math/specialcase2|inlined.0 end - local.get $3 + local.get $5 i64.const 4602678819172646912 i64.add f64.reinterpret_i64 - local.tee $4 - local.get $0 + local.tee $7 + local.get $6 f64.mul - local.get $4 + local.get $7 f64.add - local.tee $2 + local.tee $0 f64.const 1 f64.lt if (result f64) - local.get $2 + local.get $0 f64.const 1 f64.add - local.tee $7 + local.tee $10 f64.const 1 - local.get $7 + local.get $10 f64.sub - local.get $2 + local.get $0 f64.add - local.get $4 - local.get $2 - f64.sub - local.get $4 + local.get $7 local.get $0 + f64.sub + local.get $7 + local.get $6 f64.mul f64.add f64.add @@ -5248,31 +5910,27 @@ f64.const 1 f64.sub else - local.get $2 + local.get $0 end f64.const 2.2250738585072014e-308 f64.mul end br $~lib/util/math/exp2_lut|inlined.0 end - local.get $3 + local.get $5 f64.reinterpret_i64 - local.tee $2 - local.get $0 + local.tee $0 + local.get $6 f64.mul - local.get $2 + local.get $0 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 $0 + local.get $4 call $~lib/bindings/Math/pow local.get $1 local.get $2 @@ -5281,29 +5939,29 @@ i32.const 0 end ) - (func $~lib/math/NativeMathf.exp2 (param $0 f32) (result f32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i64) + (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 f64) + (local $7 i64) block $~lib/util/math/exp2f_lut|inlined.0 (result f32) local.get $0 f64.promote_f32 - local.set $1 + local.set $3 local.get $0 i32.reinterpret_f32 - local.tee $2 + local.tee $4 i32.const 20 i32.shr_u i32.const 2047 i32.and - local.tee $3 + local.tee $5 i32.const 1072 i32.ge_u if f32.const 0 - local.get $2 + local.get $4 i32.const -8388608 i32.eq br_if $~lib/util/math/exp2f_lut|inlined.0 @@ -5311,7 +5969,7 @@ local.get $0 local.get $0 f32.add - local.get $3 + local.get $5 i32.const 2040 i32.ge_u br_if $~lib/util/math/exp2f_lut|inlined.0 @@ -5331,41 +5989,41 @@ br_if $~lib/util/math/exp2f_lut|inlined.0 drop end - local.get $1 - local.get $1 + local.get $3 + local.get $3 f64.const 211106232532992 f64.add - local.tee $4 + local.tee $6 f64.const 211106232532992 f64.sub f64.sub - local.tee $1 + local.tee $3 f64.const 0.6931471806916203 f64.mul f64.const 1 f64.add - local.get $1 + local.get $3 f64.const 0.05550361559341535 f64.mul f64.const 0.2402284522445722 f64.add - local.get $1 - local.get $1 + local.get $3 + local.get $3 f64.mul f64.mul f64.add - local.get $4 + local.get $6 i64.reinterpret_f64 - local.tee $5 + local.tee $7 i32.wrap_i64 i32.const 31 i32.and i32.const 3 i32.shl - i32.const 3360 + i32.const 7712 i32.add i64.load - local.get $5 + local.get $7 i64.const 47 i64.shl i64.add @@ -5373,520 +6031,501 @@ f64.mul f32.demote_f64 end - ) - (func $std/math/test_floor (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.floor local.get $1 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/floor - local.get $1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + local.get $2 + call $std/math/check ) - (func $~lib/math/NativeMath.hypot (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) + (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) (local $4 i64) - (local $5 f64) - (local $6 i32) + (local $5 i64) + (local $6 i64) (local $7 f64) - (local $8 i32) - (local $9 f64) + (local $8 f64) + (local $9 i32) (local $10 f64) - (local $11 f64) + (local $11 i32) + (local $12 f64) + (local $13 f64) local.get $1 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $2 + local.tee $4 local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $3 + local.tee $5 i64.gt_u if - local.get $3 - local.get $2 - local.set $3 - local.set $2 + local.get $5 + local.get $4 + local.set $5 + local.set $4 end - local.get $2 - f64.reinterpret_i64 - local.set $1 - local.get $2 + local.get $5 i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $6 - i32.const 2047 - i32.eq - if - local.get $1 - return - end - local.get $3 + local.set $11 + local.get $4 f64.reinterpret_i64 - local.set $0 - i32.const 1 - local.get $2 - i64.eqz - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2047 - i32.eq - select - if - local.get $0 - return - end - local.get $8 - local.get $6 - i32.sub - i32.const 64 - i32.gt_s - if + local.set $1 + block $__inlined_func$~lib/math/NativeMath.hypot (result f64) + local.get $1 + local.get $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $9 + i32.const 2047 + i32.eq + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop + local.get $5 + f64.reinterpret_i64 + local.tee $0 + i32.const 1 + local.get $4 + i64.eqz + local.get $11 + i32.const 2047 + i32.eq + select + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop local.get $0 local.get $1 f64.add - return - end - f64.const 1 - local.set $7 - local.get $8 - i32.const 1533 - i32.gt_u - if (result f64) - f64.const 5260135901548373507240989e186 - local.set $7 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - local.get $0 - f64.const 1.90109156629516e-211 - f64.mul - else - local.get $6 - i32.const 573 - i32.lt_u + local.get $11 + local.get $9 + i32.sub + i32.const 64 + i32.gt_s + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop + f64.const 1 + local.set $10 + local.get $11 + i32.const 1533 + i32.gt_u if (result f64) - f64.const 1.90109156629516e-211 - local.set $7 - local.get $1 f64.const 5260135901548373507240989e186 + local.set $10 + local.get $1 + f64.const 1.90109156629516e-211 f64.mul local.set $1 local.get $0 - f64.const 5260135901548373507240989e186 + f64.const 1.90109156629516e-211 f64.mul else - local.get $0 + local.get $9 + i32.const 573 + i32.lt_u + if (result f64) + f64.const 1.90109156629516e-211 + local.set $10 + local.get $1 + f64.const 5260135901548373507240989e186 + f64.mul + local.set $1 + local.get $0 + f64.const 5260135901548373507240989e186 + f64.mul + else + local.get $0 + end end + local.set $0 + local.get $1 + local.get $1 + local.get $1 + f64.const 134217729 + f64.mul + local.tee $13 + f64.sub + local.get $13 + f64.add + local.tee $13 + f64.sub + local.set $8 + local.get $0 + local.get $0 + local.get $0 + f64.const 134217729 + f64.mul + local.tee $12 + f64.sub + local.get $12 + f64.add + local.tee $12 + f64.sub + local.set $7 + local.get $10 + local.get $13 + local.get $13 + f64.mul + local.get $1 + local.get $1 + f64.mul + local.tee $1 + f64.sub + local.get $13 + local.get $13 + f64.add + local.get $8 + f64.add + local.get $8 + f64.mul + f64.add + local.get $12 + local.get $12 + f64.mul + local.get $0 + local.get $0 + f64.mul + local.tee $0 + f64.sub + local.get $12 + local.get $12 + f64.add + local.get $7 + f64.add + local.get $7 + f64.mul + f64.add + f64.add + local.get $1 + f64.add + local.get $0 + f64.add + f64.sqrt + f64.mul end - local.set $0 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $10 - f64.sub - local.set $5 - local.get $0 - local.get $0 - local.get $0 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $9 - f64.sub - local.set $11 - local.get $7 - local.get $10 - local.get $10 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $1 - f64.sub - local.get $10 - local.get $10 - f64.add - local.get $5 - f64.add - local.get $5 - f64.mul - f64.add - local.get $9 - local.get $9 - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.sub - local.get $9 - local.get $9 - f64.add - local.get $11 - f64.add - local.get $11 - f64.mul - f64.add - f64.add - local.get $1 - f64.add - local.get $0 - f64.add - f64.sqrt - f64.mul + local.get $2 + local.get $3 + call $std/math/check ) - (func $~lib/math/NativeMathf.hypot (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) + (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) (local $4 i32) - (local $5 f32) + (local $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f32) local.get $1 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $2 + local.tee $4 local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $3 + local.tee $5 i32.gt_u if - local.get $3 - local.get $2 - local.set $3 - local.set $2 + local.get $5 + local.get $4 + local.set $5 + local.set $4 end - local.get $3 + local.get $5 f32.reinterpret_i32 local.set $0 - local.get $2 - f32.reinterpret_i32 - local.set $1 - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $1 - return - end - i32.const 1 - local.get $3 - local.get $2 - i32.sub - i32.const 209715200 - i32.ge_u - i32.const 1 - local.get $2 - i32.eqz - local.get $3 - i32.const 2139095040 - i32.ge_u - select - select - if + block $__inlined_func$~lib/math/NativeMathf.hypot (result f32) + local.get $4 + f32.reinterpret_i32 + local.tee $1 + local.get $4 + i32.const 2139095040 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.hypot + drop local.get $0 local.get $1 f32.add - return - end - f32.const 1 - local.set $5 - local.get $3 - i32.const 1568669696 - i32.ge_u - if (result f32) - f32.const 1237940039285380274899124e3 - local.set $5 - local.get $1 - f32.const 8.077935669463161e-28 - f32.mul - local.set $1 - local.get $0 - f32.const 8.077935669463161e-28 - f32.mul - else - local.get $2 - i32.const 562036736 - i32.lt_u + i32.const 1 + local.get $5 + local.get $4 + i32.sub + i32.const 209715200 + i32.ge_u + i32.const 1 + local.get $4 + i32.eqz + local.get $5 + i32.const 2139095040 + i32.ge_u + select + select + br_if $__inlined_func$~lib/math/NativeMathf.hypot + drop + f32.const 1 + local.set $8 + local.get $5 + i32.const 1568669696 + i32.ge_u if (result f32) - f32.const 8.077935669463161e-28 - local.set $5 - local.get $1 f32.const 1237940039285380274899124e3 + local.set $8 + local.get $1 + f32.const 8.077935669463161e-28 f32.mul local.set $1 local.get $0 - f32.const 1237940039285380274899124e3 + f32.const 8.077935669463161e-28 f32.mul else - local.get $0 + local.get $4 + i32.const 562036736 + i32.lt_u + if (result f32) + f32.const 8.077935669463161e-28 + local.set $8 + local.get $1 + f32.const 1237940039285380274899124e3 + f32.mul + local.set $1 + local.get $0 + f32.const 1237940039285380274899124e3 + f32.mul + else + local.get $0 + end end - end - local.set $0 - local.get $5 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.mul - local.get $1 - f64.promote_f32 - local.get $1 - f64.promote_f32 - f64.mul - f64.add - f32.demote_f64 - f32.sqrt - f32.mul - ) - (func $std/math/test_log (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.log - local.get $1 - local.get $2 - call $std/math/check - if (result i32) + local.set $0 + local.get $8 local.get $0 - call $~lib/bindings/Math/log + f64.promote_f32 + local.tee $7 + local.get $7 + f64.mul local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 + f64.promote_f32 + local.tee $7 + local.get $7 + f64.mul + f64.add + f32.demote_f64 + f32.sqrt + f32.mul end + local.get $2 + local.get $3 + call $std/math/check ) - (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) + (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) - (local $4 f64) + (local $4 i32) (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) + (local $6 i64) + (local $7 i32) + (local $8 f64) (local $9 f64) (local $10 f64) (local $11 f64) - 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 $12 f64) + (local $13 f64) + (local $14 f64) + (local $15 f64) + block $__inlined_func$~lib/math/NativeMath.log10 + i32.const 1 local.get $0 - f64.const 18014398509481984 - f64.mul + local.tee $3 i64.reinterpret_f64 - local.tee $2 + local.tee $6 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u + local.tee $4 + i32.const 31 + i32.shr_u + local.get $4 + i32.const 1048576 + i32.lt_u + select if - local.get $0 - return - else - local.get $2 - i64.const 32 + local.get $6 + i64.const 1 i64.shl i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select 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 - return + 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.eqz + i32.const 0 + local.get $4 + i32.const 1072693248 + i32.eq + select + if + f64.const 0 + local.set $3 + br $__inlined_func$~lib/math/NativeMath.log10 + end 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 $2 - 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_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.log10 local.get $1 local.get $2 call $std/math/check @@ -5900,1937 +6539,1734 @@ i32.const 0 end ) - (func $~lib/math/NativeMathf.log10 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) + (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) (local $4 f32) (local $5 i32) (local $6 f32) - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8388608 - i32.lt_u - select - if - local.get $1 + (local $7 f32) + (local $8 f32) + (local $9 f32) + block $__inlined_func$~lib/math/NativeMathf.log10 i32.const 1 - i32.shl - i32.eqz + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.get $3 + i32.const 8388608 + i32.lt_u + select if - f32.const -1 - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.eqz + if + f32.const -1 + local.get $0 + local.get $0 + f32.mul + f32.div + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.log10 + end + local.get $3 + i32.const 31 + i32.shr_u + if + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.div + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.log10 + end + i32.const -25 + local.set $5 local.get $0 + f32.const 33554432 f32.mul - f32.div - return + i32.reinterpret_f32 + local.set $3 + else + local.get $3 + i32.const 2139095040 + i32.ge_u + if + br $__inlined_func$~lib/math/NativeMathf.log10 + else + local.get $3 + i32.const 1065353216 + i32.eq + if + f32.const 0 + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.log10 + end + end end - local.get $1 - i32.const 31 + local.get $3 + i32.const 4913933 + i32.add + local.tee $3 + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + f32.reinterpret_i32 + f32.const 1 + f32.sub + local.tee $0 + local.get $0 + f32.const 2 + f32.add + f32.div + local.tee $6 + local.get $6 + f32.mul + local.tee $7 + local.get $7 + f32.mul + local.set $4 + local.get $5 + local.get $3 + i32.const 23 i32.shr_u + i32.const 127 + i32.sub + i32.add + f32.convert_i32_s + local.tee $9 + f32.const 7.903415166765626e-07 + f32.mul + local.get $0 + local.get $0 + local.get $0 + f32.const 0.5 + f32.mul + local.get $0 + f32.mul + local.tee $0 + f32.sub + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $8 + f32.sub + local.get $0 + f32.sub + local.get $6 + local.get $0 + local.get $7 + local.get $4 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $4 + local.get $4 + f32.const 0.24279078841209412 + f32.mul + f32.const 0.40000972151756287 + f32.add + f32.mul + f32.add + f32.add + f32.mul + f32.add + local.tee $0 + local.get $8 + f32.add + f32.const -3.168997136526741e-05 + f32.mul + f32.add + local.get $0 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $8 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $9 + f32.const 0.3010292053222656 + f32.mul + f32.add + local.set $0 + end + local.get $0 + local.get $1 + local.get $2 + call $std/math/check + ) + (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) + (local $1 i64) + (local $2 f64) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 i64) + (local $8 f64) + (local $9 i32) + block $~lib/util/math/log2_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $1 + i64.const 4606800540372828160 + i64.sub + i64.const 581272283906048 + i64.lt_u if + local.get $0 + f64.const 1 + f64.sub + local.tee $0 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $4 + f64.const 1.4426950407214463 + f64.mul + local.tee $5 local.get $0 local.get $0 - f32.sub - f32.const 0 - f32.div - return + f64.mul + local.tee $2 + local.get $0 + f64.const 0.48089834696298744 + f64.mul + f64.const -0.7213475204444817 + f64.add + f64.mul + local.tee $6 + f64.add + local.tee $8 + local.get $0 + local.get $4 + f64.sub + f64.const 1.4426950407214463 + f64.mul + local.get $0 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + local.get $5 + local.get $8 + f64.sub + local.get $6 + f64.add + f64.add + local.get $2 + local.get $2 + f64.mul + local.tee $4 + local.get $0 + f64.const 0.2885390081805197 + f64.mul + f64.const -0.360673760222145 + f64.add + local.get $2 + local.get $0 + f64.const 0.2060992861022954 + f64.mul + f64.const -0.24044917405728863 + f64.add + f64.mul + f64.add + local.get $4 + local.get $0 + f64.const 0.1603032746063156 + f64.mul + f64.const -0.18033596705327856 + f64.add + local.get $2 + local.get $0 + f64.const 0.13046826811283835 + f64.mul + f64.const -0.14483316576701266 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.add + br $~lib/util/math/log2_lut|inlined.0 end - i32.const -25 - local.set $5 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else local.get $1 - i32.const 2139095040 + i64.const 48 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 16 + i32.sub + i32.const 32736 i32.ge_u if + f64.const -1 local.get $0 - return - else + local.get $0 + f64.mul + f64.div local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end + i64.const 1 + i64.shl + i64.eqz + br_if $~lib/util/math/log2_lut|inlined.0 + drop + local.get $0 + local.get $1 + i64.const 9218868437227405312 + i64.eq + br_if $~lib/util/math/log2_lut|inlined.0 + drop + local.get $0 + local.get $0 + f64.sub + local.tee $2 + local.get $2 + f64.div + i32.const 1 + local.get $3 + i32.const 32752 + i32.and + i32.const 32752 + i32.eq + local.get $3 + i32.const 32768 + i32.and + select + br_if $~lib/util/math/log2_lut|inlined.0 + drop + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 234187180623265792 + i64.sub + local.set $1 end + local.get $1 + i64.const 4604367669032910848 + i64.sub + local.tee $7 + i64.const 46 + i64.shr_u + i64.const 63 + i64.and + i32.wrap_i64 + i32.const 4 + i32.shl + local.tee $9 + i32.const 8992 + i32.add + local.set $3 + local.get $1 + local.get $7 + i64.const -4503599627370496 + i64.and + i64.sub + f64.reinterpret_i64 + local.get $3 + f64.load + f64.sub + local.get $3 + f64.load offset=8 + f64.sub + local.get $9 + i32.const 7968 + i32.add + local.tee $3 + f64.load + f64.mul + local.tee $0 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $2 + local.get $7 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.get $3 + f64.load offset=8 + f64.add + local.tee $5 + local.get $2 + f64.const 1.4426950407214463 + f64.mul + local.tee $6 + f64.add + local.set $4 + local.get $5 + local.get $4 + f64.sub + local.get $6 + f64.add + local.get $0 + local.get $2 + f64.sub + f64.const 1.4426950407214463 + f64.mul + local.get $0 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + f64.add + local.get $0 + local.get $0 + f64.mul + local.tee $2 + local.get $0 + f64.const 0.4808983469629985 + f64.mul + f64.const -0.7213475204444882 + f64.add + local.get $2 + local.get $0 + f64.const 0.2885390073180969 + f64.mul + f64.const -0.36067375954075914 + f64.add + f64.mul + f64.add + local.get $2 + local.get $2 + f64.mul + local.get $0 + f64.const 0.2061202382173603 + f64.mul + f64.const -0.2404693555628422 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.get $4 + f64.add + end + ) + (func $std/math/test_log2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f32) + block $~lib/util/math/log2f_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 8388608 + i32.sub + i32.const 2130706432 + i32.ge_u + if + f32.const -inf + local.get $3 + i32.const 1 + i32.shl + i32.eqz + br_if $~lib/util/math/log2f_lut|inlined.0 + drop + local.get $0 + local.get $3 + i32.const 2139095040 + i32.eq + br_if $~lib/util/math/log2f_lut|inlined.0 + drop + local.get $0 + local.get $0 + f32.sub + local.tee $8 + local.get $8 + f32.div + i32.const 1 + local.get $3 + i32.const 1 + i32.shl + i32.const -16777216 + i32.ge_u + local.get $3 + i32.const 31 + i32.shr_u + select + br_if $~lib/util/math/log2f_lut|inlined.0 + drop + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 192937984 + i32.sub + local.set $3 + end + local.get $3 + i32.const 1060306944 + i32.sub + local.tee $5 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 10016 + i32.add + local.set $6 + local.get $3 + local.get $5 + i32.const -8388608 + i32.and + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $6 + f64.load + f64.mul + f64.const 1 + f64.sub + local.tee $4 + local.get $4 + f64.mul + local.set $7 + local.get $4 + f64.const 0.4811247078767291 + f64.mul + f64.const -0.7213476299867769 + f64.add + local.get $7 + f64.const -0.36051725506874704 + f64.mul + f64.add + local.get $7 + f64.mul + local.get $4 + f64.const 1.4426950186867042 + f64.mul + local.get $6 + f64.load offset=8 + local.get $5 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.add + f64.add + f64.add + f32.demote_f64 end local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - f32.const 2 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $5 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - local.tee $6 - f32.const 7.903415166765626e-07 - f32.mul - local.get $0 - local.get $0 - local.get $0 - f32.const 0.5 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $4 - f32.sub - local.get $0 - f32.sub - local.get $3 - local.get $0 - local.get $2 local.get $2 - local.get $2 - f32.mul - local.tee $0 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $0 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $4 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $0 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $4 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $6 - f32.const 0.3010292053222656 - f32.mul - f32.add + call $std/math/check ) - (func $std/math/test_log1p (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (func $std/math/test_max (param $0 f64) (param $1 f64) (param $2 f64) (result i32) local.get $0 - call $~lib/math/NativeMath.log1p local.get $1 + f64.max local.get $2 + f64.const 0 call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/log1p local.get $1 + call $~lib/bindings/Math/max local.get $2 + f64.const 0 call $std/math/check else i32.const 0 end ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 f64) - (local $10 f64) - i32.const 1 + (func $std/math/test_min (param $0 f64) (param $1 f64) (param $2 f64) (result i32) 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 + f64.min + local.get $2 + f64.const 0 + call $std/math/check + if (result i32) + local.get $0 + local.get $1 + call $~lib/bindings/Math/min local.get $2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_mod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (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 $0 + local.get $0 + f64.trunc + f64.sub + local.get $0 + f64.copysign + 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 + local.tee $4 + i64.const 52 + i64.shr_u + i64.const 2047 + 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 + 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 i64.shl + local.tee $7 i64.eqz + select + select if - f64.const -1 - local.get $0 local.get $0 + local.get $1 f64.mul + local.tee $9 + local.get $9 f64.div - return + br $__inlined_func$~lib/math/NativeMath.mod end - local.get $1 - i32.const 31 - i32.shr_u + local.get $7 + local.get $3 + i64.const 1 + i64.shl + local.tee $10 + i64.ge_u if local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return + local.get $7 + local.get $10 + i64.ne + f64.convert_i32_u + f64.mul + br $__inlined_func$~lib/math/NativeMath.mod end - i32.const -54 - local.set $8 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return + 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 $2 - i64.const 32 + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $3 + local.get $6 + i64.eqz + if (result i64) + local.get $4 + i64.const 1 + local.get $6 + local.get $4 + i64.const 12 i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select + i64.clz + i64.sub + local.tee $6 + i64.sub + i64.shl + else + local.get $4 + i64.const 4503599627370495 + i64.and + 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 + local.get $4 + i64.ge_u if - f64.const 0 - return + local.get $3 + local.get $4 + i64.eq + br_if $folding-inner0 + local.get $3 + local.get $4 + i64.sub + local.set $3 end - end - end - local.get $2 - 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 - 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 1.4426950407214463 - f64.mul - local.tee $10 - f64.add - local.set $7 - 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 1.6751713164886512e-10 - f64.mul - local.get $0 - f64.const 1.4426950407214463 - f64.mul - f64.add - local.get $9 - local.get $7 - f64.sub - local.get $10 - f64.add - f64.add - local.get $7 - f64.add - ) - (func $std/math/test_log2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.log2 - local.get $1 + local.get $3 + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $4 + i64.shl + local.set $3 + local.get $5 + 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 + end + local.get $0 + f64.const 0 + f64.mul + end local.get $2 + f64.const 0 call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/Math/log2 local.get $1 + call $std/math/mod local.get $2 + f64.const 0 call $std/math/check else i32.const 0 end ) - (func $~lib/math/NativeMathf.log2 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) + (func $std/math/test_modf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 i32) (local $5 i32) - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8388608 - i32.lt_u - select - if + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 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 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end local.get $1 - i32.const 31 + 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 $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.sub - f32.const 0 f32.div - return + br $__inlined_func$~lib/math/NativeMathf.mod end - i32.const -25 - local.set $5 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 + local.get $7 + local.get $3 + i32.const 1 + i32.shl + local.tee $9 i32.ge_u if local.get $0 - return + 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 $1 - i32.const 1065353216 - i32.eq + 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 + local.get $3 + local.get $4 + i32.ge_u if - f32.const 0 - return + 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.shl + local.set $3 + local.get $5 + 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 end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - f32.const 2 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $0 - local.get $0 - local.get $0 - f32.const 0.5 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $4 - f32.sub - local.get $0 - f32.sub - local.get $3 - local.get $0 - local.get $2 - local.get $2 - local.get $2 - f32.mul - local.tee $0 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $0 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $4 - f32.add - f32.const -1.7605285393074155e-04 - f32.mul - local.get $0 - f32.const 1.44287109375 - f32.mul - f32.add - local.get $4 - f32.const 1.44287109375 - f32.mul - f32.add - local.get $5 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - f32.add - ) - (func $std/math/test_max (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - f64.max - local.get $2 - f64.const 0 - call $std/math/check - if (result i32) local.get $0 - local.get $1 - call $~lib/bindings/Math/max - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 + f32.const 0 + f32.mul end - ) - (func $std/math/test_min (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - f64.min local.get $2 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - local.get $1 - call $~lib/bindings/Math/min - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + f32.const 0 + call $std/math/check ) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) + (local $3 i32) + (local $4 f64) + (local $5 f64) (local $6 i64) (local $7 i64) (local $8 i64) + (local $9 f64) + (local $10 i32) + (local $11 f64) + (local $12 i32) + (local $13 f64) + (local $14 i64) + (local $15 f64) + (local $16 f64) + (local $17 f64) local.get $1 f64.abs - f64.const 1 - f64.eq + f64.const 2 + f64.le if - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - return + local.get $1 + f64.const 2 + f64.eq + if + local.get $0 + local.get $0 + f64.mul + return + end + local.get $1 + f64.const 0.5 + f64.eq + if + local.get $0 + f64.sqrt + f64.abs + f64.const inf + local.get $0 + f64.const -inf + f64.ne + select + return + end + local.get $1 + f64.const -1 + f64.eq + if + f64.const 1 + local.get $0 + f64.div + return + end + local.get $1 + f64.const 1 + f64.eq + if + local.get $0 + return + end + local.get $1 + f64.const 0 + f64.eq + if + f64.const 1 + return + end end local.get $1 + local.tee $5 i64.reinterpret_f64 - local.tee $3 + local.tee $7 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.set $14 + block $~lib/util/math/pow_lut|inlined.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.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + local.tee $8 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 - local.get $5 - i64.gt_s + i64.const 2046 + i64.ge_u + if (result i32) + i32.const 1 + else + local.get $14 + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + end + if + local.get $7 + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740993 + i64.ge_u 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 + f64.const 1 + local.set $0 + local.get $7 i64.const 1 i64.shl - local.set $2 + i64.eqz + br_if $~lib/util/math/pow_lut|inlined.0 + f64.const nan:0x8000000000000 + local.set $0 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 local.get $4 + local.get $5 + f64.add + local.set $0 + i32.const 1 + local.get $7 i64.const 1 - i64.sub - local.set $4 - br $while-continue|0 + i64.shl + i64.const -9007199254740992 + i64.gt_u + local.get $2 + i64.const 1 + i64.shl + i64.const -9007199254740992 + i64.gt_u + select + br_if $~lib/util/math/pow_lut|inlined.0 + f64.const nan:0x8000000000000 + local.set $0 + local.get $2 + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + f64.const 0 + local.set $0 + local.get $7 + i64.const 63 + i64.shr_u + i64.eqz + local.get $2 + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.lt_u + i32.eq + br_if $~lib/util/math/pow_lut|inlined.0 + local.get $5 + local.get $5 + f64.mul + local.set $0 + br $~lib/util/math/pow_lut|inlined.0 end - end - 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.const 1 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/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 - if (result i32) - local.get $0 - local.get $1 - call $std/math/mod - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (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.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 - local.get $5 - i32.gt_s + i64.const -9007199254740993 + i64.ge_u if + f64.const 1 + local.get $4 + local.get $4 + f64.mul + local.tee $0 + f64.neg + local.get $0 local.get $2 - local.get $3 - i32.ge_u + i64.const 63 + i64.shr_u + i32.wrap_i64 if (result i32) - local.get $2 - local.get $3 + block $~lib/util/math/checkint|inlined.0 (result i32) + i32.const 0 + local.get $7 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $6 + i64.const 1023 + i64.lt_u + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 2 + local.get $6 + i64.const 1075 + i64.gt_u + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 0 + local.get $7 + i64.const 1 + i64.const 1075 + local.get $6 + i64.sub + i64.shl + local.tee $6 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 1 + local.get $6 + local.get $7 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 2 + end + i32.const 1 i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub else - local.get $2 + i32.const 0 + end + select + local.tee $0 + f64.div + local.get $0 + local.get $7 + i64.const 63 + i64.shr_u + i32.wrap_i64 + select + local.set $0 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if + local.get $4 + local.get $4 + f64.sub + local.tee $0 + local.get $0 + f64.div + local.set $0 + block $~lib/util/math/checkint|inlined.1 (result i32) + i32.const 0 + local.get $7 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $6 + i64.const 1023 + i64.lt_u + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 + local.get $6 + i64.const 1075 + i64.gt_u + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 0 + local.get $7 + i64.const 1 + i64.const 1075 + local.get $6 + i64.sub + i64.shl + local.tee $6 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 1 + local.get $6 + local.get $7 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 end + local.tee $10 + i32.eqz + br_if $~lib/util/math/pow_lut|inlined.0 + local.get $8 + i64.const 2047 + i64.and + local.set $8 + i32.const 262144 + i32.const 0 + local.get $10 i32.const 1 - i32.shl + i32.eq + select + local.set $12 + local.get $2 + i64.const 9223372036854775807 + i64.and local.set $2 + end + local.get $14 + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + if + f64.const 1 + local.set $0 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + local.get $14 + i64.const 2047 + i64.and + i64.const 958 + i64.lt_u + br_if $~lib/util/math/pow_lut|inlined.0 + f64.const inf + f64.const 0 + local.get $14 + i64.const 2048 + i64.lt_u + local.get $2 + i64.const 4607182418800017408 + i64.gt_u + i32.eq + select + local.set $0 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $8 + i64.eqz + if (result i64) local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + i64.const 234187180623265792 + i64.sub + else + local.get $2 end - 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 + i64.const 4604531861337669632 + i64.sub + local.tee $8 + i64.const 45 + i64.shr_u + i64.const 127 + i64.and + i32.wrap_i64 + local.set $10 local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $3 + local.get $8 + i64.const -4503599627370496 + i64.and + i64.sub + local.tee $6 + i64.const 2147483648 + i64.add + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $1 + local.get $10 + i32.const 5 i32.shl - local.set $2 - local.get $4 - local.get $3 - i32.sub + i32.const 10272 + i32.add + local.tee $10 + f64.load + local.tee $0 + f64.mul + f64.const 1 + f64.sub + local.tee $13 + local.get $6 + f64.reinterpret_i64 + local.get $1 + f64.sub + local.get $0 + f64.mul + local.tee $17 + f64.add + local.tee $11 + f64.const -0.5 + f64.mul + local.set $15 + local.get $8 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.tee $9 + f64.const 0.6931471805598903 + f64.mul + local.get $10 + f64.load offset=16 + f64.add 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 $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 f64) - (local $11 i32) - (local $12 i32) - (local $13 f64) - (local $14 i64) - (local $15 f64) - (local $16 i32) - (local $17 f64) - (local $18 i32) - (local $19 f64) - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - local.get $1 - f64.abs - f64.const 2 - f64.le - if - local.get $1 - f64.const 2 - f64.eq - br_if $folding-inner0 - local.get $1 - f64.const 0.5 - f64.eq - if - local.get $0 - f64.sqrt - f64.abs - f64.const inf - local.get $0 - f64.const -inf - f64.ne - select - return - end - local.get $1 - f64.const -1 - f64.eq - br_if $folding-inner1 - local.get $1 - f64.const 1 - f64.eq - if - local.get $0 - return - end - local.get $1 - f64.const 0 - f64.eq - if - f64.const 1 - return - end - end - local.get $0 - i64.reinterpret_f64 - local.tee $14 - i32.wrap_i64 - local.set $18 - local.get $14 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $16 - i32.const 2147483647 - i32.and - local.set $4 - local.get $1 - i64.reinterpret_f64 - local.tee $14 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2147483647 - i32.and - local.tee $9 - local.get $14 - i32.wrap_i64 - local.tee $6 - i32.or - i32.eqz - if - f64.const 1 - return - end - i32.const 1 - local.get $6 - i32.const 0 - local.get $9 - i32.const 2146435072 - i32.eq - select - i32.const 1 - local.get $9 - i32.const 2146435072 - i32.gt_u - i32.const 1 - local.get $18 - i32.const 0 - local.get $4 - i32.const 2146435072 - i32.eq - select - local.get $4 - i32.const 2146435072 - i32.gt_s - select - select - select - if - local.get $0 - local.get $1 - f64.add - return - end - local.get $16 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - i32.const 1128267776 - i32.ge_u - if (result i32) - i32.const 2 - else - local.get $9 - i32.const 1072693248 - i32.ge_u - if (result i32) - i32.const 52 - i32.const 20 - local.get $9 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.tee $11 - i32.const 20 - i32.gt_s - local.tee $5 - select - local.get $11 - i32.sub - local.set $12 - i32.const 2 - local.get $6 - local.get $9 - local.get $5 - select - local.tee $5 - local.get $12 - i32.shr_u - local.tee $11 - i32.const 1 - i32.and - i32.sub - i32.const 0 - local.get $5 - local.get $11 - local.get $12 - i32.shl - i32.eq - select - else - i32.const 0 - end - end - else - i32.const 0 - end - local.set $5 - local.get $6 - i32.eqz - if - local.get $9 - i32.const 2146435072 - i32.eq - if - local.get $18 - local.get $4 - i32.const 1072693248 - i32.sub - i32.or - if - local.get $4 - i32.const 1072693248 - i32.ge_s - if - local.get $1 - f64.const 0 - local.get $8 - i32.const 0 - i32.ge_s - select - return - else - f64.const 0 - local.get $1 - f64.neg - local.get $8 - i32.const 0 - i32.ge_s - select - return - end - unreachable - else - f64.const nan:0x8000000000000 - return - end - unreachable - end - local.get $9 - i32.const 1072693248 - i32.eq - if - local.get $8 - i32.const 0 - i32.ge_s - if - local.get $0 - return - end - br $folding-inner1 - end - local.get $8 - i32.const 1073741824 - i32.eq - br_if $folding-inner0 - local.get $8 - i32.const 1071644672 - i32.eq - if - local.get $16 - i32.const 0 - i32.ge_s - if - local.get $0 - f64.sqrt - return - end - end - end - local.get $0 - f64.abs - local.set $3 - local.get $18 - i32.eqz - if - i32.const 1 - local.get $4 - i32.const 1072693248 - i32.eq - local.get $4 - i32.const 2146435072 - i32.eq - i32.const 1 - local.get $4 - select - select - if - f64.const 1 - local.get $3 - f64.div - local.get $3 - local.get $8 - i32.const 0 - i32.lt_s - select - local.set $3 - local.get $16 - i32.const 0 - i32.lt_s - if (result f64) - local.get $5 - local.get $4 - i32.const 1072693248 - i32.sub - i32.or - if (result f64) - local.get $3 - f64.neg - local.get $3 - local.get $5 - i32.const 1 - i32.eq - select - else - local.get $3 - local.get $3 - f64.sub - local.tee $0 - local.get $0 - f64.div - end - else - local.get $3 - end - return - end - end - local.get $16 - i32.const 0 - i32.lt_s - if (result f64) - local.get $5 - i32.eqz - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - local.get $0 - f64.div - return - end - f64.const -1 - f64.const 1 - local.get $5 - i32.const 1 - i32.eq - select - else - f64.const 1 - end - local.set $10 - local.get $9 - i32.const 1105199104 - i32.gt_u - if (result f64) - local.get $9 - i32.const 1139802112 - i32.gt_u - if - local.get $4 - i32.const 1072693247 - i32.le_s - if - f64.const inf - f64.const 0 - local.get $8 - i32.const 0 - i32.lt_s - select - return - end - local.get $4 - i32.const 1072693248 - i32.ge_s - if - f64.const inf - f64.const 0 - local.get $8 - i32.const 0 - i32.gt_s - select - return - end - end - local.get $4 - i32.const 1072693247 - i32.lt_s - if - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - local.get $8 - i32.const 0 - i32.lt_s - select - return - end - local.get $4 - i32.const 1072693248 - i32.gt_s - if - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - local.get $8 - i32.const 0 - i32.gt_s - select - return - end - local.get $3 - f64.const 1 - f64.sub - local.tee $0 - f64.const 1.4426950216293335 - f64.mul - local.tee $3 - local.get $0 - f64.const 1.9259629911266175e-08 - f64.mul - local.get $0 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.const 0.3333333333333333 - local.get $0 - f64.const 0.25 - f64.mul - f64.sub - f64.mul - f64.sub - f64.mul - f64.const 1.4426950408889634 - f64.mul - f64.sub - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $7 - local.get $0 - local.get $7 - local.get $3 - f64.sub - f64.sub - else - local.get $4 - i32.const 1048576 - i32.lt_s - if (result i32) - local.get $3 - f64.const 9007199254740992 - f64.mul - local.tee $3 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $4 - i32.const -53 - else - i32.const 0 - end - local.get $4 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - i32.add - local.set $6 - local.get $4 - i32.const 1048575 - i32.and - local.tee $5 - i32.const 1072693248 - i32.or - local.set $4 - local.get $5 - i32.const 235662 - i32.le_s - if (result i32) - i32.const 0 - else - local.get $5 - i32.const 767610 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $4 - i32.const -1048576 - i32.add - local.set $4 - i32.const 0 - end - end - local.set $5 - local.get $3 - i64.reinterpret_f64 - i64.const 4294967295 - i64.and - local.get $4 - i64.extend_i32_s - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $7 - f64.const 1.5 - f64.const 1 - local.get $5 - select - local.tee $2 - f64.sub - local.tee $3 - f64.const 1 - local.get $7 - local.get $2 - f64.add - f64.div - local.tee $0 - f64.mul - local.tee $17 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $15 - local.get $15 - local.get $15 - f64.mul - local.tee $19 - f64.const 3 - f64.add - local.get $17 - local.get $17 - f64.mul - local.tee $13 - local.get $13 - f64.mul - local.get $13 - local.get $13 - local.get $13 - local.get $13 - local.get $13 - f64.const 0.20697501780033842 - f64.mul - f64.const 0.23066074577556175 - f64.add - f64.mul - f64.const 0.272728123808534 - f64.add - f64.mul - f64.const 0.33333332981837743 - f64.add - f64.mul - f64.const 0.4285714285785502 - f64.add - f64.mul - f64.const 0.5999999999999946 - f64.add - f64.mul - local.get $0 - local.get $3 - local.get $15 - local.get $4 - i32.const 1 - i32.shr_s - i32.const 536870912 - i32.or - i32.const 524288 - i32.add - local.get $5 - i32.const 18 - i32.shl - i32.add - i64.extend_i32_s - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.tee $0 - f64.mul - f64.sub - local.get $15 - local.get $7 - local.get $0 - local.get $2 - f64.sub - f64.sub - f64.mul - f64.sub - f64.mul - local.tee $2 - local.get $15 - local.get $17 - f64.add - f64.mul - f64.add - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and + local.get $11 + f64.add + local.tee $16 + local.get $13 + local.get $13 + f64.const -0.5 + f64.mul + local.tee $1 + f64.mul + local.tee $0 + f64.add + local.tee $13 + local.get $13 + local.get $9 + f64.const 5.497923018708371e-14 + f64.mul + local.get $10 + f64.load offset=24 + f64.add + local.get $4 + local.get $16 + f64.sub + local.get $11 + f64.add + f64.add + local.get $17 + local.get $15 + local.get $1 + f64.add + f64.mul + f64.add + local.get $16 + local.get $13 + f64.sub + local.get $0 + f64.add + f64.add + local.get $11 + local.get $11 + local.get $15 + f64.mul + local.tee $0 + f64.mul + local.get $11 + f64.const 0.5000000000000007 + f64.mul + f64.const -0.6666666666666679 + f64.add + local.get $0 + local.get $11 + f64.const -0.6666666663487739 + f64.mul + f64.const 0.7999999995323976 + f64.add + local.get $0 + local.get $11 + f64.const 1.0000415263675542 + f64.mul + f64.const -1.142909628459501 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $0 + f64.add + local.tee $1 + f64.sub + local.get $0 + f64.add + global.set $~lib/util/math/log_tail + block $~lib/util/math/exp_inline|inlined.0 (result f64) + local.get $5 + local.get $7 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.tee $0 + f64.sub + local.get $1 + i64.reinterpret_f64 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.tee $4 + f64.mul + local.get $5 + local.get $1 + local.get $4 + f64.sub + global.get $~lib/util/math/log_tail + f64.add + f64.mul + f64.add + local.set $1 + local.get $0 + local.get $4 + f64.mul + local.tee $4 + i64.reinterpret_f64 + local.tee $6 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $3 + i32.const 969 + i32.sub + i32.const 63 + i32.ge_u + if + f64.const -1 + f64.const 1 + local.get $12 + select + local.get $3 + i32.const 969 + i32.sub + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp_inline|inlined.0 + drop + local.get $6 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result f64) + f64.const -1.2882297539194267e-231 + f64.const 1.2882297539194267e-231 + local.get $12 + select + f64.const 1.2882297539194267e-231 + f64.mul + else + f64.const -3105036184601417870297958e207 + f64.const 3105036184601417870297958e207 + local.get $12 + select + f64.const 3105036184601417870297958e207 + f64.mul + end + local.get $3 + i32.const 1033 + i32.ge_u + br_if $~lib/util/math/exp_inline|inlined.0 + drop + i32.const 0 + local.set $3 + end + local.get $4 + f64.const 184.6649652337873 + f64.mul + f64.const 6755399441055744 + f64.add + local.tee $0 + f64.const 6755399441055744 + f64.sub + local.set $5 + local.get $0 + i64.reinterpret_f64 + local.tee $8 + i64.const 127 + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5664 + i32.add + local.tee $10 + i64.load offset=8 + local.get $8 + local.get $12 + i64.extend_i32_u + i64.add + i64.const 45 + i64.shl + i64.add + local.set $6 + local.get $4 + local.get $5 + f64.const -0.005415212348111709 + f64.mul + f64.add + local.get $5 + f64.const -1.2864023111638346e-14 + f64.mul + f64.add + local.get $1 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.set $0 + local.get $10 + i64.load + f64.reinterpret_i64 + local.get $1 + f64.add + local.get $0 + local.get $1 + f64.const 0.16666666666665886 + f64.mul + f64.const 0.49999999999996786 + f64.add + f64.mul + f64.add + local.get $0 + local.get $0 + f64.mul + local.get $1 + f64.const 0.008333335853059549 + f64.mul + f64.const 0.0416666808410674 + f64.add + f64.mul + f64.add + local.set $0 + local.get $3 + i32.eqz + if + block $~lib/util/math/specialcase|inlined.1 (result f64) + local.get $8 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $6 + i64.const 4544132024016830464 + i64.sub f64.reinterpret_i64 - local.tee $7 - f64.mul - local.tee $3 - local.get $2 - local.get $7 - f64.mul + local.tee $1 + local.get $1 local.get $0 - local.get $7 - f64.const 3 - f64.sub - local.get $19 - f64.sub - f64.sub - local.get $17 f64.mul f64.add - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $2 - f64.const 0.9617967009544373 - f64.mul - local.tee $19 - local.get $2 - f64.const -7.028461650952758e-09 - f64.mul - local.get $0 - local.get $2 - local.get $3 - f64.sub - f64.sub - f64.const 0.9617966939259756 + f64.const 5486124068793688683255936e279 f64.mul - f64.add - f64.const 1.350039202129749e-08 - f64.const 0 - local.get $5 - select - f64.add - local.tee $2 - f64.add - f64.const 0.5849624872207642 - f64.const 0 - local.get $5 - select - local.tee $3 - f64.add - local.get $6 - f64.convert_i32_s - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $7 - local.get $2 - local.get $7 - local.get $0 - f64.sub - local.get $3 - f64.sub - local.get $19 - f64.sub - f64.sub + br $~lib/util/math/specialcase|inlined.1 end - local.set $3 - local.get $1 - local.get $1 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and + local.get $6 + i64.const 4602678819172646912 + i64.add + local.tee $6 f64.reinterpret_i64 - local.tee $0 - f64.sub - local.get $7 - f64.mul - local.get $1 - local.get $3 - f64.mul - f64.add - local.tee $1 + local.tee $4 + local.get $4 local.get $0 - local.get $7 f64.mul - local.tee $2 f64.add - local.tee $0 - i64.reinterpret_f64 - local.tee $14 - i32.wrap_i64 - local.set $5 - local.get $14 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $12 - i32.const 1083179008 - i32.ge_s - if + local.tee $9 + f64.abs + f64.const 1 + f64.lt + if (result f64) + f64.const 1 + local.get $9 + f64.copysign + local.tee $5 + local.get $9 + f64.add + local.tee $1 local.get $5 - local.get $12 - i32.const 1083179008 - i32.sub - i32.or local.get $1 - f64.const 8.008566259537294e-17 + f64.sub + local.get $9 f64.add - local.get $0 - local.get $2 + local.get $4 + local.get $9 f64.sub - f64.gt - i32.or - br_if $folding-inner2 - else - local.get $12 - i32.const 2147483647 - i32.and - i32.const 1083231232 - i32.ge_u - i32.const 0 - local.get $5 - local.get $12 - i32.const 1064252416 - i32.add - i32.or - local.get $1 + local.get $4 local.get $0 - local.get $2 - f64.sub - f64.le - i32.or - select - br_if $folding-inner3 - end - local.get $12 - i32.const 2147483647 - i32.and - local.tee $11 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.set $5 - i32.const 0 - local.set $6 - local.get $1 - local.get $11 - i32.const 1071644672 - i32.gt_s - if - i32.const 1048575 - local.get $12 - i32.const 1048576 - local.get $5 - i32.const 1 - i32.add - i32.shr_s - i32.add - local.tee $11 - i32.const 2147483647 - i32.and - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.tee $5 - i32.shr_s - i32.const -1 - i32.xor - local.get $11 - i32.and - i64.extend_i32_s - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $0 - i32.const 0 - local.get $11 - i32.const 1048575 - i32.and - i32.const 1048576 - i32.or - i32.const 20 + f64.mul + f64.add + f64.add + f64.add local.get $5 - i32.sub - i32.shr_s - local.tee $6 - i32.sub - local.get $6 - local.get $12 - i32.const 0 - i32.lt_s - select - local.set $6 - local.get $2 - local.get $0 f64.sub - local.set $2 - end - local.get $2 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - f64.const 0.6931471824645996 - f64.mul - local.tee $3 - local.get $1 - local.get $0 - local.get $2 - f64.sub - f64.sub - f64.const 0.6931471805599453 - f64.mul - local.get $0 - f64.const -1.904654299957768e-09 - f64.mul - f64.add - local.tee $1 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.set $0 - local.get $10 - f64.const 1 - local.get $2 - local.get $2 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 4.1381367970572385e-08 - f64.mul - f64.const -1.6533902205465252e-06 - f64.add - f64.mul - f64.const 6.613756321437934e-05 - f64.add - f64.mul - f64.const -2.7777777777015593e-03 - f64.add - f64.mul - f64.const 0.16666666666666602 - f64.add - f64.mul - f64.sub - local.tee $0 - f64.mul - local.get $0 - f64.const 2 - f64.sub - f64.div - local.get $1 - local.get $2 - local.get $3 - f64.sub - f64.sub - local.tee $0 - local.get $2 - local.get $0 - f64.mul - f64.add - f64.sub - local.get $2 - f64.sub - f64.sub - local.tee $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.get $6 - i32.const 20 - i32.shl - i32.add - local.tee $5 - i32.const 20 - i32.shr_s - i32.const 0 - i32.le_s - if (result f64) - local.get $0 - local.get $6 - call $~lib/math/NativeMath.scalbn + local.tee $9 + f64.const 0 + f64.eq + if (result f64) + local.get $6 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + else + local.get $9 + end else - local.get $0 - i64.reinterpret_f64 - i64.const 4294967295 - i64.and - local.get $5 - i64.extend_i32_s - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 + local.get $9 end + f64.const 2.2250738585072014e-308 f64.mul - return end - local.get $0 - local.get $0 - f64.mul - return + br $~lib/util/math/exp_inline|inlined.0 end - f64.const 1 + local.get $6 + f64.reinterpret_i64 + local.tee $1 + local.get $1 local.get $0 - f64.div - return + f64.mul + f64.add end - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - return + local.set $0 end - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul + local.get $0 ) (func $std/math/test_pow (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) local.get $0 @@ -7851,16 +8287,14 @@ end ) (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) - (local $2 f64) - (local $3 f64) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 f32) - (local $9 i32) - (local $10 i64) - (local $11 f64) + (local $5 f32) + (local $6 f64) + (local $7 f64) + (local $8 i32) + (local $9 i64) local.get $1 f32.abs f32.const 2 @@ -7913,222 +8347,393 @@ return end end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.or - if - f32.const nan:0x400000 - return - end - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - local.set $6 - local.get $1 - local.get $1 - f32.nearest - f32.eq - i32.const 0 - local.get $4 - i32.const 31 - i32.shr_u - local.tee $4 - select - if - i32.const 0 - local.set $4 + block $~lib/util/math/powf_lut|inlined.0 local.get $1 - f32.const 0.5 - f32.mul - local.tee $8 - local.get $8 - f32.nearest - f32.ne - i32.const 31 + i32.reinterpret_f32 + local.tee $3 + i32.const 1 i32.shl - local.set $9 + i32.const 1 + i32.sub + i32.const -16777217 + i32.ge_u + local.tee $4 local.get $0 - f32.neg - local.set $0 - end - local.get $1 - i32.reinterpret_f32 - local.set $5 - local.get $6 - i32.const 1065353216 - i32.eq - if (result i32) - i32.const 2143289344 - i32.const 1065353216 - local.get $4 - local.get $5 - i32.const 2147483647 - i32.and - i32.const 2139095040 - i32.eq + local.tee $5 + i32.reinterpret_f32 + local.tee $2 + i32.const 8388608 + i32.sub + i32.const 2130706432 + i32.ge_u i32.or - select - else - local.get $6 - if (result i32) - local.get $6 - i32.const 2139095040 - i32.eq - if (result i32) - i32.const 0 - i32.const 2139095040 + if + local.get $4 + if + f32.const 1 + local.set $0 + local.get $3 + i32.const 1 + i32.shl + i32.eqz + br_if $~lib/util/math/powf_lut|inlined.0 + f32.const nan:0x400000 + local.set $0 + local.get $2 + i32.const 1065353216 + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 local.get $5 + local.get $1 + f32.add + local.set $0 + i32.const 1 + local.get $3 + i32.const 1 + i32.shl + i32.const -16777216 + i32.gt_u + local.get $2 + i32.const 1 + i32.shl + i32.const -16777216 + i32.gt_u + select + br_if $~lib/util/math/powf_lut|inlined.0 + f32.const nan:0x400000 + local.set $0 + local.get $2 + i32.const 1 + i32.shl + i32.const 2130706432 + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + f32.const 0 + local.set $0 + local.get $3 i32.const 31 i32.shr_u - select - else - local.get $4 - if (result i32) - i32.const 2143289344 - else - block $~lib/math/exp2f|inlined.0 (result f64) - local.get $0 - f64.promote_f32 - i64.reinterpret_f64 - local.tee $10 - i64.const 4604544271217802189 - i64.sub - i64.const 52 - i64.shr_s - local.set $7 - local.get $10 - local.get $7 - i64.const 52 - i64.shl - i64.sub - f64.reinterpret_i64 - local.tee $2 - f64.const 1 - f64.sub - local.get $2 - f64.const 1 - f64.add - f64.div - local.tee $3 - local.get $3 - f64.mul - local.set $2 - f64.const 0 - local.get $1 - f64.promote_f32 - local.get $3 + i32.eqz + local.get $2 + i32.const 1 + i32.shl + i32.const 2130706432 + i32.lt_u + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + local.get $1 + local.get $1 + f32.mul + local.set $0 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $2 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.const -16777217 + i32.ge_u + if + f32.const 1 + local.get $5 + local.get $5 + f32.mul + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 31 + i32.shr_u + if (result i32) + block $~lib/util/math/checkintf|inlined.0 (result i32) + i32.const 0 local.get $3 - local.get $2 - f64.mul - local.get $2 - f64.const 0.20000167595436263 - f64.mul - f64.const 0.3333333282272823 - f64.add - local.get $2 - f64.const 0.11791075649681414 - f64.mul - f64.const 0.14268654271188685 - f64.add - local.get $2 - local.get $2 - f64.mul - f64.mul - f64.add - f64.mul - f64.add - f64.const 2.8853900817779268 - f64.mul - local.get $7 - f64.convert_i64_s - f64.add - f64.mul - local.tee $2 - f64.const -1022 - f64.lt - br_if $~lib/math/exp2f|inlined.0 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $4 + i32.const 127 + i32.lt_u + br_if $~lib/util/math/checkintf|inlined.0 drop - f64.const inf - local.get $2 - f64.const 1024 - f64.ge - br_if $~lib/math/exp2f|inlined.0 + i32.const 2 + local.get $4 + i32.const 150 + i32.gt_u + br_if $~lib/util/math/checkintf|inlined.0 drop - local.get $2 - local.get $2 - f64.nearest - local.tee $11 - f64.sub - local.tee $2 - local.get $2 - f64.mul - local.set $3 - local.get $2 - local.get $2 - f64.const 0.24022651084211735 - f64.mul - f64.const 0.6931471880289533 - f64.add - local.get $2 - f64.const 0.009618030771171498 - f64.mul - f64.const 0.055503571054988744 - f64.add - local.get $3 - f64.mul - f64.add - local.get $2 - f64.const 1.5469734999890288e-04 - f64.mul - f64.const 0.001339086685300951 - f64.add + i32.const 0 local.get $3 + i32.const 1 + i32.const 150 + local.get $4 + i32.sub + i32.shl + local.tee $4 + i32.const 1 + i32.sub + i32.and + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 1 local.get $3 - f64.mul - f64.mul - f64.add - f64.mul - f64.const 1 - f64.add - i64.reinterpret_f64 - local.get $11 - i64.trunc_f64_s - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 + local.get $4 + i32.and + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 2 end - f32.demote_f64 - i32.reinterpret_f32 + i32.const 1 + i32.eq + else + i32.const 0 end + select + local.tee $0 + f32.div + local.get $0 + local.get $3 + i32.const 31 + i32.shr_u + select + local.set $0 + br $~lib/util/math/powf_lut|inlined.0 end - else - i32.const 2139095040 - i32.const 0 - local.get $5 + local.get $2 i32.const 31 i32.shr_u - select + if + local.get $5 + local.get $5 + f32.sub + local.tee $0 + local.get $0 + f32.div + local.set $0 + block $~lib/util/math/checkintf|inlined.1 (result i32) + i32.const 0 + local.get $3 + local.tee $4 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $3 + i32.const 127 + i32.lt_u + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 2 + local.get $3 + i32.const 150 + i32.gt_u + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 0 + local.get $4 + i32.const 1 + i32.const 150 + local.get $3 + i32.sub + i32.shl + local.tee $3 + i32.const 1 + i32.sub + i32.and + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 1 + local.get $3 + local.get $4 + i32.and + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 2 + end + local.tee $4 + i32.eqz + br_if $~lib/util/math/powf_lut|inlined.0 + i32.const 65536 + i32.const 0 + local.get $4 + i32.const 1 + i32.eq + select + local.set $8 + local.get $2 + i32.const 2147483647 + i32.and + local.set $2 + end + local.get $2 + i32.const 8388608 + i32.lt_u + if (result i32) + local.get $5 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + i32.const 192937984 + i32.sub + else + local.get $2 + end + local.set $2 + end + local.get $2 + local.get $2 + i32.const 1060306944 + i32.sub + local.tee $3 + i32.const -8388608 + i32.and + local.tee $4 + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $3 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 10016 + i32.add + local.tee $3 + f64.load + f64.mul + f64.const 1 + f64.sub + local.tee $6 + local.get $6 + f64.mul + local.set $7 + local.get $1 + f64.promote_f32 + local.get $6 + f64.const 0.288457581109214 + f64.mul + f64.const -0.36092606229713164 + f64.add + local.get $7 + local.get $7 + f64.mul + f64.mul + local.get $6 + f64.const 1.4426950408774342 + f64.mul + local.get $3 + f64.load offset=8 + local.get $4 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.add + f64.add + local.get $6 + f64.const 0.480898481472577 + f64.mul + f64.const -0.7213474675006291 + f64.add + local.get $7 + f64.mul + f64.add + f64.add + f64.mul + local.tee $6 + i64.reinterpret_f64 + i64.const 47 + i64.shr_u + i64.const 65535 + i64.and + i64.const 32959 + i64.ge_u + if + local.get $6 + f64.const 127.99999995700433 + f64.gt + if + f32.const -1584563250285286751870879e5 + f32.const 1584563250285286751870879e5 + local.get $8 + select + f32.const 1584563250285286751870879e5 + f32.mul + local.set $0 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $6 + f64.const -150 + f64.le + if + f32.const -2.524354896707238e-29 + f32.const 2.524354896707238e-29 + local.get $8 + select + f32.const 2.524354896707238e-29 + f32.mul + local.set $0 + br $~lib/util/math/powf_lut|inlined.0 + end end + local.get $6 + local.get $6 + f64.const 211106232532992 + f64.add + local.tee $7 + f64.const 211106232532992 + f64.sub + f64.sub + local.tee $6 + f64.const 0.6931471806916203 + f64.mul + f64.const 1 + f64.add + local.get $6 + f64.const 0.05550361559341535 + f64.mul + f64.const 0.2402284522445722 + f64.add + local.get $6 + local.get $6 + f64.mul + f64.mul + f64.add + local.get $7 + i64.reinterpret_f64 + local.tee $9 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $9 + local.get $8 + i64.extend_i32_u + i64.add + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 + f64.mul + f32.demote_f64 + local.set $0 end - local.get $9 - i32.or - f32.reinterpret_i32 + local.get $0 ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + (local $1 i32) + (local $2 i64) + i32.const 1 + global.set $~lib/math/random_seeded local.get $0 local.get $0 i64.const 33 @@ -8136,68 +8741,104 @@ i64.xor i64.const -49064778989728563 i64.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i64.const 33 i64.shr_u i64.xor i64.const -4265267296055464877 i64.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i64.const 33 i64.shr_u i64.xor - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $2 + local.get $2 + 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_state1_64 local.get $0 + i32.wrap_i64 i32.const 1831565813 i32.add - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor - local.get $0 + local.get $1 i32.const 1 i32.or i32.mul - local.tee $0 - local.get $0 - local.get $0 + local.tee $1 + local.get $1 + local.get $1 i32.const 61 i32.or - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 7 i32.shr_u i32.xor i32.mul i32.add i32.xor - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 14 i32.shr_u i32.xor - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - local.get $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 global.set $~lib/math/random_state0_32 global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 + 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 @@ -8218,42 +8859,22 @@ i32.eqz if i32.const 0 - i32.const 3648 + i32.const 14400 i32.const 1417 i32.const 5 call $~lib/builtins/abort unreachable end ) - (func $std/math/test_round (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.const 0.5 - f64.add - f64.floor - local.get $0 - f64.copysign - local.get $1 - f64.const 0 - call $std/math/check - ) - (func $std/math/test_roundf (param $0 f32) (param $1 f32) (result i32) - local.get $0 - f32.const 0.5 - f32.add - f32.floor - local.get $0 - f32.copysign - local.get $1 - f32.const 0 - call $std/math/check - ) (func $std/math/test_sign (param $0 f64) (param $1 f64) (result i32) f64.const 1 + f64.const -1 local.get $0 - f64.copysign local.get $0 + f64.const 0 + f64.lt + select local.get $0 - f64.abs f64.const 0 f64.gt select @@ -8272,11 +8893,13 @@ ) (func $std/math/test_signf (param $0 f32) (param $1 f32) (result i32) f32.const 1 + f32.const -1 local.get $0 - f32.copysign local.get $0 + f32.const 0 + f32.lt + select local.get $0 - f32.abs f32.const 0 f32.gt select @@ -8290,8 +8913,8 @@ (local $4 i64) (local $5 i64) (local $6 i32) - (local $7 i32) - (local $8 f64) + (local $7 f64) + (local $8 i32) local.get $1 i64.reinterpret_f64 local.tee $4 @@ -8306,7 +8929,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.set $7 + local.set $8 i32.const 1 local.get $1 local.get $1 @@ -8467,63 +9090,70 @@ local.set $2 end end - i32.const 1 - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 0 local.get $1 f64.abs - local.tee $1 - local.get $2 - i64.const 4503599627370496 - i64.sub - local.get $3 - i64.const 52 - i64.shl - i64.or - local.get $2 - i64.const 1 - local.get $3 - i64.sub - i64.shr_u + local.set $1 local.get $3 i64.const 0 i64.gt_s - select + if (result i64) + local.get $2 + i64.const 4503599627370496 + i64.sub + local.get $3 + i64.const 52 + i64.shl + i64.or + else + local.get $2 + i64.const 1 + local.get $3 + i64.sub + i64.shr_u + end f64.reinterpret_i64 local.tee $0 local.get $0 f64.add - local.tee $8 - f64.eq - select + local.set $7 + local.get $0 local.get $1 - local.get $8 - f64.lt - select - i32.const 0 - local.get $5 - local.get $3 - i64.const 1 - i64.add - i64.eq - select + f64.sub + local.get $0 local.get $3 local.get $5 i64.eq - select - if - local.get $0 - local.get $1 - f64.sub - local.set $0 + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i64.const 1 + i64.add + i64.eq + if (result i32) + i32.const 1 + local.get $6 + i32.const 1 + i32.and + i32.const 0 + local.get $1 + local.get $7 + f64.eq + select + local.get $1 + local.get $7 + f64.lt + select + else + i32.const 0 + end end - local.get $0 + select + local.tee $0 f64.neg local.get $0 - local.get $7 + local.get $8 select ) (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) @@ -8532,8 +9162,8 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 f32) + (local $7 f32) + (local $8 i32) local.get $1 i32.reinterpret_f32 local.tee $4 @@ -8547,7 +9177,7 @@ local.tee $2 i32.const 31 i32.shr_u - local.set $7 + local.set $8 i32.const 1 local.get $1 local.get $1 @@ -8701,66 +9331,73 @@ local.set $2 else i32.const -30 - local.set $3 - end - end - i32.const 1 - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 0 - local.get $1 - f32.abs - local.tee $1 - local.get $2 - i32.const 8388608 - i32.sub - local.get $3 - i32.const 23 - i32.shl - i32.or - local.get $2 - i32.const 1 - local.get $3 - i32.sub - i32.shr_u + local.set $3 + end + end + local.get $1 + f32.abs + local.set $1 local.get $3 i32.const 0 i32.gt_s - select + if (result i32) + local.get $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + else + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u + end f32.reinterpret_i32 local.tee $0 local.get $0 f32.add - local.tee $8 - f32.eq - select + local.set $7 + local.get $0 local.get $1 - local.get $8 - f32.lt - select - i32.const 0 - local.get $5 - local.get $3 - i32.const 1 - i32.add - i32.eq - select + f32.sub + local.get $0 local.get $3 local.get $5 i32.eq - select - if - local.get $0 - local.get $1 - f32.sub - local.set $0 + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i32.const 1 + i32.add + i32.eq + if (result i32) + i32.const 1 + local.get $6 + i32.const 1 + i32.and + i32.const 0 + local.get $1 + local.get $7 + f32.eq + select + local.get $1 + local.get $7 + f32.lt + select + else + i32.const 0 + end end - local.get $0 + select + local.tee $0 f32.neg local.get $0 - local.get $7 + local.get $8 select ) (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) @@ -8770,7 +9407,8 @@ (local $4 f64) (local $5 i32) (local $6 i32) - (local $7 f64) + (local $7 i32) + (local $8 f64) local.get $0 i64.reinterpret_f64 local.tee $2 @@ -8847,11 +9485,89 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 - i32.const 1094263291 + local.tee $7 + i32.const 1073928572 i32.lt_u if + i32.const 1 + local.set $5 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $5 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $3 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $3 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const 1.5707963267341256 + f64.sub + local.set $0 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.sub + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.sub + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.sub + local.tee $3 + f64.const 2.0222662487959506e-21 + f64.sub + local.set $0 + local.get $3 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.sub + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 local.get $5 + br $~lib/math/rempio2|inlined.1 + end + local.get $7 + i32.const 1094263291 + i32.lt_u + if + local.get $7 i32.const 20 i32.shr_u local.tee $6 @@ -8979,9 +9695,9 @@ f64.mul local.tee $1 f64.sub - local.tee $7 + local.tee $8 f64.const 1 - local.get $7 + local.get $8 f64.sub local.get $1 f64.sub @@ -9075,371 +9791,548 @@ i32.and select ) - (func $std/math/test_sin (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.sin - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/sin - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 f64) + (local $3 i64) + (local $4 i32) (local $5 i64) - (local $6 f64) + (local $6 i64) (local $7 i64) (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $11 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $4 - local.get $4 - f64.mul - local.tee $6 - local.get $4 - f64.mul - local.set $3 - local.get $4 - local.get $3 - local.get $6 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $3 - local.get $6 - local.get $6 - f64.mul - f64.mul - local.get $6 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 + (local $9 i32) + (local $10 f64) + (local $11 f64) + (local $12 f64) + block $folding-inner0 local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.1 (result i32) + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_u + local.set $9 local.get $2 - i32.const 1305022427 - i32.lt_u + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1061752794 + i32.le_u if + local.get $1 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end local.get $0 f64.promote_f32 + local.tee $11 + local.get $11 + f64.mul + local.tee $10 + local.get $11 + f64.mul + local.set $12 + br $folding-inner0 + end + local.get $1 + i32.const 1081824209 + i32.le_u + if + local.get $1 + i32.const 1075235811 + i32.le_u + if + local.get $9 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + local.get $11 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $12 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $12 + local.get $11 + f64.mul + local.get $11 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + else + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.sub + local.tee $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + local.get $11 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $12 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $12 + local.get $11 + f64.mul + local.get $11 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + end + return + end local.get $0 f64.promote_f32 - f64.const 0.6366197723675814 + local.tee $12 + f64.const 3.141592653589793 + f64.add + local.get $12 + f64.const 3.141592653589793 + f64.sub + local.get $9 + select + f64.neg + local.tee $11 + local.get $11 f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 + local.tee $10 + local.get $11 f64.mul + local.set $12 + br $folding-inner0 + end + local.get $1 + i32.const 1088565717 + i32.le_u + if + local.get $1 + i32.const 1085271519 + i32.le_u + if + local.get $9 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.add + local.tee $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + local.get $11 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $12 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $12 + local.get $11 + f64.mul + local.get $11 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.tee $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + local.get $11 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $12 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $12 + local.get $11 + f64.mul + local.get $11 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + end + return + end + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 6.283185307179586 + f64.add + local.get $12 + f64.const 6.283185307179586 f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 + local.get $9 + select + local.tee $11 + local.get $11 f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.1 + local.tee $10 + local.get $11 + f64.mul + local.set $12 + br $folding-inner0 end - local.get $2 - i32.const 23 - i32.shr_u - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1280 - i32.add - local.tee $10 - i64.load - local.set $7 - local.get $10 - i64.load offset=8 - local.set $8 local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $5 - i64.const 32 - i64.gt_u - if (result i64) - local.get $8 - local.get $5 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.1 (result i32) + local.get $1 + local.tee $2 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $11 + local.get $12 + local.get $11 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $11 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $11 + i32.trunc_f64_s + br $~lib/math/rempio2f|inlined.1 + end + local.get $2 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $2 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $4 + i64.load + local.set $7 + local.get $4 + i64.load offset=8 + local.set $6 + local.get $2 + i32.const 63 + i32.and + i64.extend_i32_s + local.tee $8 i64.const 32 - i64.sub + i64.gt_u + if (result i64) + local.get $6 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $4 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $6 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.set $3 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $5 + local.get $7 + local.get $8 i64.shl - local.get $10 - i64.load offset=16 - i64.const 96 - local.get $5 + local.get $6 + i64.const 64 + local.get $8 i64.sub i64.shr_u i64.or - else - local.get $8 + i64.mul + local.get $3 + local.get $5 + i64.mul i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 2 + i64.shl + local.tee $5 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $7 + i64.const 62 + i64.shr_u local.get $5 - i64.sub + i64.const 63 i64.shr_u + i64.add + i32.wrap_i64 + local.tee $2 + i32.sub + local.get $2 + local.get $9 + select + end + local.set $2 + global.get $~lib/math/rempio2f_y + local.set $12 + local.get $2 + i32.const 1 + i32.and + if (result f32) + local.get $12 + local.get $12 + f64.mul + local.tee $11 + local.get $11 + f64.mul + local.set $12 + local.get $11 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $12 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $12 + local.get $11 + f64.mul + local.get $11 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $12 + local.get $12 + local.get $12 + f64.mul + local.tee $11 + local.get $12 + f64.mul + local.tee $12 + local.get $11 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $12 + local.get $11 + local.get $11 + f64.mul + f64.mul + local.get $11 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 end - local.set $12 - f64.const 8.515303950216386e-20 + local.tee $0 + f32.neg local.get $0 - f64.promote_f32 - f64.copysign local.get $2 - i32.const 8388607 + i32.const 2 i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - local.get $5 - i64.shl - local.get $8 - i64.const 64 - local.get $5 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $9 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 2 - i64.shl - local.tee $9 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $7 - i64.const 62 - i64.shr_u - local.get $9 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $11 select + return end - local.set $1 - global.get $~lib/math/rempio2f_y - local.set $3 - local.get $1 - i32.const 1 - i32.and - if (result f32) - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $3 - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $3 - f64.mul - local.tee $3 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - f64.mul - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.tee $0 - f32.neg - local.get $0 - local.get $1 - i32.const 2 - i32.and - select + local.get $11 + local.get $12 + local.get $10 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $12 + local.get $10 + local.get $10 + f64.mul + f64.mul + local.get $10 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 ) (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) (local $4 f64) - (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 + (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 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $5 i32.const 1082535490 i32.lt_u if - local.get $4 + local.get $3 call $~lib/math/NativeMath.expm1 - local.set $4 - local.get $6 + local.set $3 + local.get $5 i32.const 1072693248 i32.lt_u if - local.get $6 + local.get $0 + local.get $5 i32.const 1045430272 i32.lt_u br_if $__inlined_func$~lib/math/NativeMath.sinh - local.get $5 - local.get $4 + drop local.get $4 + local.get $3 + local.get $3 f64.add - local.get $4 - local.get $4 + local.get $3 + local.get $3 f64.mul - local.get $4 + local.get $3 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 $4 + local.get $3 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp - local.get $5 - local.get $5 + local.get $4 + local.get $4 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 @@ -9531,22 +10424,6 @@ local.get $2 call $std/math/check ) - (func $std/math/test_sqrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - f64.sqrt - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/sqrt - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) (local $3 f64) (local $4 f64) @@ -9734,6 +10611,7 @@ (local $4 i32) (local $5 f64) (local $6 i32) + (local $7 i32) local.get $0 i64.reinterpret_f64 local.tee $2 @@ -9780,11 +10658,89 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $4 - i32.const 1094263291 + local.tee $7 + i32.const 1073928572 i32.lt_u if + i32.const 1 + local.set $4 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $4 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $3 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $3 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const 1.5707963267341256 + f64.sub + local.set $0 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.sub + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.sub + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.sub + local.tee $3 + f64.const 2.0222662487959506e-21 + f64.sub + local.set $0 + local.get $3 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.sub + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 local.get $4 + br $~lib/math/rempio2|inlined.2 + end + local.get $7 + i32.const 1094263291 + i32.lt_u + if + local.get $7 i32.const 20 i32.shr_u local.tee $6 @@ -9793,15 +10749,15 @@ f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $5 + local.tee $3 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $5 + local.get $3 f64.const 6.077100506506192e-11 f64.mul - local.tee $3 + local.tee $5 f64.sub local.tee $1 i64.reinterpret_f64 @@ -9816,25 +10772,25 @@ i32.const 16 i32.gt_u if - local.get $5 + local.get $3 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $5 + local.get $3 f64.const 6.077100506303966e-11 f64.mul - local.tee $3 + local.tee $5 f64.sub local.tee $0 f64.sub - local.get $3 + local.get $5 f64.sub f64.sub - local.set $3 + local.set $5 local.get $6 local.get $0 - local.get $3 + local.get $5 f64.sub local.tee $1 i64.reinterpret_f64 @@ -9849,24 +10805,24 @@ i32.const 49 i32.gt_u if (result f64) - local.get $5 + local.get $3 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $5 + local.get $3 f64.const 2.0222662487111665e-21 f64.mul - local.tee $3 + local.tee $5 f64.sub local.tee $0 f64.sub - local.get $3 + local.get $5 f64.sub f64.sub - local.set $3 + local.set $5 local.get $0 - local.get $3 + local.get $5 f64.sub else local.get $1 @@ -9878,10 +10834,10 @@ local.get $0 local.get $1 f64.sub - local.get $3 + local.get $5 f64.sub global.set $~lib/math/rempio2_y1 - local.get $5 + local.get $3 i32.trunc_f64_s br $~lib/math/rempio2|inlined.2 end @@ -9906,86 +10862,351 @@ i32.sub call $~lib/math/tan_kern ) - (func $std/math/test_tan (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.tan - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/tan - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) + (local $3 i64) + (local $4 i32) + (local $5 i64) (local $6 i64) (local $7 i64) (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $11 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if + (local $9 i32) + (local $10 f64) + (local $11 f64) + (local $12 f64) + block $folding-inner1 + block $folding-inner0 local.get $0 + i32.reinterpret_f32 + local.tee $1 + i32.const 31 + i32.shr_u + local.set $9 + local.get $1 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1061752794 + i32.le_u + if + local.get $2 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end + local.get $0 + f64.promote_f32 + local.tee $10 + local.get $10 + f64.mul + local.tee $11 + local.get $10 + f64.mul + local.set $12 + br $folding-inner0 + end + local.get $2 + i32.const 1081824209 + i32.le_u + if + local.get $2 + i32.const 1075235811 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 1.5707963267948966 + f64.add + local.get $12 + f64.const 1.5707963267948966 + f64.sub + local.get $9 + select + local.tee $10 + local.get $10 + f64.mul + local.tee $11 + local.get $10 + f64.mul + local.set $12 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 3.141592653589793 + f64.add + local.get $12 + f64.const 3.141592653589793 + f64.sub + local.get $9 + select + local.tee $10 + local.get $10 + f64.mul + local.tee $11 + local.get $10 + f64.mul + local.set $12 + br $folding-inner0 + end + unreachable + end + local.get $2 + i32.const 1088565717 + i32.le_u + if + local.get $2 + i32.const 1085271519 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 4.71238898038469 + f64.add + local.get $12 + f64.const 4.71238898038469 + f64.sub + local.get $9 + select + local.tee $10 + local.get $10 + f64.mul + local.tee $11 + local.get $10 + f64.mul + local.set $12 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 6.283185307179586 + f64.add + local.get $12 + f64.const 6.283185307179586 + f64.sub + local.get $9 + select + local.tee $10 + local.get $10 + f64.mul + local.tee $11 + local.get $10 + f64.mul + local.set $12 + br $folding-inner0 + end + unreachable + end + local.get $2 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.2 (result i32) + local.get $2 + local.tee $1 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $12 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $10 + local.get $12 + local.get $10 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $10 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $10 + i32.trunc_f64_s + br $~lib/math/rempio2f|inlined.2 + end + local.get $1 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $1 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $4 + i64.load + local.set $7 + local.get $4 + i64.load offset=8 + local.set $6 + local.get $1 + i32.const 63 + i32.and + i64.extend_i32_s + local.tee $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $6 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $4 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $6 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.set $3 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $2 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $5 + local.get $7 + local.get $8 + i64.shl + local.get $6 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $3 + local.get $5 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 2 + i64.shl + local.tee $5 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $7 + i64.const 62 + i64.shr_u + local.get $5 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $1 + i32.sub + local.get $1 + local.get $9 + select + end + local.set $1 + global.get $~lib/math/rempio2f_y + local.tee $10 + local.get $10 + f64.mul + local.tee $11 + local.get $10 + f64.mul + local.set $12 + f64.const -1 + local.get $10 + local.get $12 + local.get $11 + f64.const 0.13339200271297674 + f64.mul + f64.const 0.3333313950307914 + f64.add + f64.mul + f64.add + local.get $12 + local.get $11 + local.get $11 + f64.mul + local.tee $12 + f64.mul + local.get $11 + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $12 + local.get $11 + f64.const 0.009465647849436732 + f64.mul + f64.const 0.002974357433599673 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $12 + f64.div + local.get $12 + local.get $1 + i32.const 1 + i32.and + select + f32.demote_f64 return end - local.get $0 - f64.promote_f32 - local.tee $5 - local.get $5 - f64.mul - local.tee $4 - local.get $5 - f64.mul - local.set $3 - local.get $5 - local.get $3 - local.get $4 + local.get $10 + local.get $12 + local.get $11 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $3 - local.get $4 - local.get $4 + local.get $12 + local.get $11 + local.get $11 f64.mul - local.tee $3 + local.tee $12 f64.mul - local.get $4 + local.get $11 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $3 - local.get $4 + local.get $12 + local.get $11 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -9997,167 +11218,29 @@ f32.demote_f64 return end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $2 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.2 - end - local.get $2 - i32.const 23 - i32.shr_u - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1280 - i32.add - local.tee $10 - i64.load - local.set $7 - local.get $10 - i64.load offset=8 - local.set $8 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $6 - i64.const 32 - i64.gt_u - if (result i64) - local.get $8 - local.get $6 - i64.const 32 - i64.sub - i64.shl - local.get $10 - i64.load offset=16 - i64.const 96 - local.get $6 - i64.sub - i64.shr_u - i64.or - else - local.get $8 - i64.const 32 - local.get $6 - i64.sub - i64.shr_u - end - local.set $12 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - local.get $6 - i64.shl - local.get $8 - i64.const 64 - local.get $6 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $9 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 2 - i64.shl - local.tee $9 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $7 - i64.const 62 - i64.shr_u - local.get $9 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $11 - select - end - local.set $1 - global.get $~lib/math/rempio2f_y - local.tee $5 - local.get $5 - f64.mul - local.tee $4 - local.get $5 - f64.mul - local.set $3 f64.const -1 - local.get $5 - local.get $3 - local.get $4 + local.get $10 + local.get $12 + local.get $11 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $3 - local.get $4 - local.get $4 + local.get $12 + local.get $11 + local.get $11 f64.mul - local.tee $3 + local.tee $12 f64.mul - local.get $4 + local.get $11 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $3 - local.get $4 + local.get $12 + local.get $11 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -10166,13 +11249,7 @@ f64.add f64.mul f64.add - local.tee $3 f64.div - local.get $3 - local.get $1 - i32.const 1 - i32.and - select f32.demote_f64 ) (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) @@ -10180,12 +11257,13 @@ (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 $3 + local.set $0 local.get $5 i64.const 32 i64.shr_u @@ -10200,14 +11278,14 @@ if (result f64) f64.const 1 f64.const 0 - local.get $3 + local.get $0 f64.div f64.sub else f64.const 1 f64.const 2 - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.add call $~lib/math/NativeMath.expm1 f64.const 2 @@ -10220,12 +11298,12 @@ i32.const 1070618798 i32.gt_u if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.add call $~lib/math/NativeMath.expm1 - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 f64.const 2 f64.add f64.div @@ -10234,28 +11312,28 @@ i32.const 1048576 i32.ge_u if (result f64) - local.get $3 + local.get $0 f64.const -2 f64.mul call $~lib/math/NativeMath.expm1 - local.tee $3 + local.tee $0 f64.neg - local.get $3 + local.get $0 f64.const 2 f64.add f64.div else - local.get $3 + local.get $0 end end end - local.get $0 + local.get $3 f64.copysign local.get $1 local.get $2 call $std/math/check if (result i32) - local.get $0 + local.get $3 call $~lib/bindings/Math/tanh local.get $1 local.get $2 @@ -10339,22 +11417,6 @@ local.get $2 call $std/math/check ) - (func $std/math/test_trunc (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.trunc - local.get $1 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/trunc - local.get $1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) (func $~lib/math/NativeMath.sincos (param $0 f64) (local $1 f64) (local $2 f64) @@ -10363,9 +11425,10 @@ (local $5 i32) (local $6 i32) (local $7 f64) - (local $8 f64) + (local $8 i32) (local $9 f64) (local $10 f64) + (local $11 f64) local.get $0 i64.reinterpret_f64 local.tee $3 @@ -10497,11 +11560,89 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 - i32.const 1094263291 + local.tee $8 + i32.const 1073928572 i32.lt_u if + i32.const 1 + local.set $5 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $5 + local.get $8 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $2 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $2 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const 1.5707963267341256 + f64.sub + local.set $0 + local.get $8 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.sub + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.sub + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.sub + local.tee $2 + f64.const 2.0222662487959506e-21 + f64.sub + local.set $0 + local.get $2 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.sub + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 local.get $5 + br $~lib/math/rempio2|inlined.3 + end + local.get $8 + i32.const 1094263291 + i32.lt_u + if + local.get $8 i32.const 20 i32.shr_u local.tee $6 @@ -10659,19 +11800,19 @@ f64.mul f64.sub f64.sub - local.tee $8 + local.tee $9 local.set $2 f64.const 1 local.get $0 f64.const 0.5 f64.mul - local.tee $9 - f64.sub local.tee $10 + f64.sub + local.tee $11 f64.const 1 - local.get $10 + local.get $11 f64.sub - local.get $9 + local.get $10 f64.sub local.get $0 local.get $0 @@ -10713,7 +11854,7 @@ if local.get $0 local.set $2 - local.get $8 + local.get $9 f64.neg local.set $0 end @@ -10759,25 +11900,16 @@ drop end ) - (func $~lib/math/dtoi32 (param $0 f64) (result i32) - local.get $0 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.const 4294967296 - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - ) (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 f64) local.get $0 local.get $1 f64.add - local.tee $2 - local.get $2 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.ne @@ -10786,32 +11918,284 @@ return end local.get $0 - call $~lib/math/dtoi32 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $3 + i64.const 1053 + i64.le_u + if (result i32) + local.get $0 + i32.trunc_f64_s + else + local.get $3 + i64.const 1106 + i64.le_u + if (result i32) + i32.const 0 + local.get $2 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.get $3 + i64.const 1043 + i64.sub + i64.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $4 + i32.sub + local.get $4 + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + select + else + i32.const 0 + end + end local.get $1 - call $~lib/math/dtoi32 - i32.mul - f64.convert_i32_s - ) - (func $~lib/math/NativeMath.clz32 (param $0 f64) (result f64) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - f64.const 32 - return + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $3 + i64.const 1053 + i64.le_u + if (result i32) + local.get $1 + i32.trunc_f64_s + else + local.get $3 + i64.const 1106 + i64.le_u + if (result i32) + i32.const 0 + local.get $2 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.get $3 + i64.const 1043 + i64.sub + i64.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $4 + i32.sub + local.get $4 + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + select + else + i32.const 0 + end end - local.get $0 - call $~lib/math/dtoi32 - i32.clz + i32.mul f64.convert_i32_s ) (func $~lib/math/ipow64 (param $0 i64) (param $1 i64) (result i64) (local $2 i64) i64.const 1 local.set $2 - loop $while-continue|0 + local.get $0 + i64.const 2 + i64.eq + if + i64.const 1 + local.get $1 + i64.shl + i64.const 0 + local.get $1 + i64.const 64 + i64.lt_u + select + return + end + local.get $1 + i64.const 0 + i64.le_s + if + local.get $0 + i64.const -1 + i64.eq + if + i64.const -1 + i64.const 1 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + return + end + local.get $1 + i64.eqz + i64.extend_i32_u + local.get $0 + i64.const 1 + i64.eq + i64.extend_i32_u + i64.or + return + else + local.get $1 + i64.const 1 + i64.eq + if + local.get $0 + return + else + local.get $1 + i64.const 2 + i64.eq + if + local.get $0 + local.get $0 + i64.mul + return + else + local.get $1 + i64.const 64 + i64.lt_s + if + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 63 + local.get $1 + i64.clz + i32.wrap_i64 + i32.sub + br_table $case5|0 $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i64.const 1 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + end + local.get $2 + return + end + end + end + end + loop $while-continue|1 local.get $1 i64.const 0 i64.ne @@ -10834,7 +12218,7 @@ local.get $0 i64.mul local.set $0 - br $while-continue|0 + br $while-continue|1 end end local.get $2 @@ -10843,7 +12227,163 @@ (local $2 i32) i32.const 1 local.set $2 - loop $while-continue|0 + local.get $0 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $1 + i32.shl + i32.const 0 + local.get $1 + i32.const 32 + i32.lt_u + select + return + end + local.get $1 + i32.const 0 + i32.le_s + if + local.get $0 + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + return + end + local.get $1 + i32.eqz + local.get $0 + i32.const 1 + i32.eq + i32.or + return + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + return + else + local.get $1 + i32.const 2 + i32.eq + if + local.get $0 + local.get $0 + i32.mul + return + else + local.get $1 + i32.const 32 + i32.lt_s + if + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 31 + local.get $1 + i32.clz + i32.sub + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + end + local.get $2 + return + end + end + end + end + loop $while-continue|1 local.get $1 if local.get $0 @@ -10863,7 +12403,7 @@ local.get $0 i32.mul local.set $0 - br $while-continue|0 + br $while-continue|1 end end local.get $2 @@ -11502,10 +13042,8 @@ end f32.const -8.066848754882812 i32.const -2 - call $~lib/math/NativeMathf.scalbn f32.const -2.016712188720703 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11517,10 +13055,8 @@ end f32.const 4.345239639282227 i32.const -1 - call $~lib/math/NativeMathf.scalbn f32.const 2.1726198196411133 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11532,10 +13068,8 @@ end f32.const -8.381433486938477 i32.const 0 - call $~lib/math/NativeMathf.scalbn f32.const -8.381433486938477 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11547,10 +13081,8 @@ end f32.const -6.531673431396484 i32.const 1 - call $~lib/math/NativeMathf.scalbn f32.const -13.063346862792969 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11562,10 +13094,8 @@ end f32.const 9.267057418823242 i32.const 2 - call $~lib/math/NativeMathf.scalbn f32.const 37.06822967529297 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11577,10 +13107,8 @@ end f32.const 0.6619858741760254 i32.const 3 - call $~lib/math/NativeMathf.scalbn f32.const 5.295886993408203 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11592,10 +13120,8 @@ end f32.const -0.40660393238067627 i32.const 4 - call $~lib/math/NativeMathf.scalbn f32.const -6.50566291809082 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11607,10 +13133,8 @@ end f32.const 0.5617597699165344 i32.const 5 - call $~lib/math/NativeMathf.scalbn f32.const 17.9763126373291 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11622,10 +13146,8 @@ end f32.const 0.7741522789001465 i32.const 6 - call $~lib/math/NativeMathf.scalbn f32.const 49.545745849609375 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11637,10 +13159,8 @@ end f32.const -0.6787636876106262 i32.const 7 - call $~lib/math/NativeMathf.scalbn f32.const -86.88175201416016 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11652,10 +13172,8 @@ end f32.const 0 i32.const 2147483647 - call $~lib/math/NativeMathf.scalbn - f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11667,10 +13185,8 @@ end f32.const 0 i32.const -2147483647 - call $~lib/math/NativeMathf.scalbn f32.const 0 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11682,10 +13198,8 @@ end f32.const -0 i32.const 2147483647 - call $~lib/math/NativeMathf.scalbn f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11697,10 +13211,8 @@ end f32.const nan:0x400000 i32.const 0 - call $~lib/math/NativeMathf.scalbn f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11712,10 +13224,8 @@ end f32.const inf i32.const 0 - call $~lib/math/NativeMathf.scalbn f32.const inf - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11727,10 +13237,8 @@ end f32.const -inf i32.const 0 - call $~lib/math/NativeMathf.scalbn f32.const -inf - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11742,10 +13250,8 @@ end f32.const 1 i32.const 0 - call $~lib/math/NativeMathf.scalbn f32.const 1 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11757,10 +13263,8 @@ end f32.const 1 i32.const 1 - call $~lib/math/NativeMathf.scalbn f32.const 2 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11772,10 +13276,8 @@ end f32.const 1 i32.const -1 - call $~lib/math/NativeMathf.scalbn f32.const 0.5 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11787,10 +13289,8 @@ end f32.const 1 i32.const 2147483647 - call $~lib/math/NativeMathf.scalbn f32.const inf - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11802,10 +13302,8 @@ end f32.const nan:0x400000 i32.const 1 - call $~lib/math/NativeMathf.scalbn f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11817,10 +13315,8 @@ end f32.const inf i32.const 2147483647 - call $~lib/math/NativeMathf.scalbn f32.const inf - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11832,10 +13328,8 @@ end f32.const inf i32.const -2147483647 - call $~lib/math/NativeMathf.scalbn f32.const inf - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11847,10 +13341,8 @@ end f32.const -inf i32.const 2147483647 - call $~lib/math/NativeMathf.scalbn f32.const -inf - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11862,10 +13354,8 @@ end f32.const 1701411834604692317316873e14 i32.const -276 - call $~lib/math/NativeMathf.scalbn f32.const 1.401298464324817e-45 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11877,10 +13367,8 @@ end f32.const 1.401298464324817e-45 i32.const 276 - call $~lib/math/NativeMathf.scalbn f32.const 1701411834604692317316873e14 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11892,10 +13380,8 @@ end f32.const 1.000244140625 i32.const -149 - call $~lib/math/NativeMathf.scalbn f32.const 1.401298464324817e-45 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11907,10 +13393,8 @@ end f32.const 0.7499999403953552 i32.const -148 - call $~lib/math/NativeMathf.scalbn f32.const 1.401298464324817e-45 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11922,10 +13406,8 @@ end f32.const 0.5000006556510925 i32.const -128 - call $~lib/math/NativeMathf.scalbn f32.const 1.4693693398263237e-39 - f32.const 0 - call $std/math/check + call $std/math/test_scalbnf i32.eqz if i32.const 0 @@ -11935,9 +13417,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.06684839057968 f64.const 8.06684839057968 - call $std/math/test_abs + f64.const 8.06684839057968 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/abs + f64.const 8.06684839057968 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -11949,7 +13441,17 @@ end f64.const 4.345239849338305 f64.const 4.345239849338305 - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/abs + f64.const 4.345239849338305 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -11959,9 +13461,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.38143342755525 f64.const 8.38143342755525 - call $std/math/test_abs + f64.const 8.38143342755525 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/abs + f64.const 8.38143342755525 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -11971,9 +13483,19 @@ call $~lib/builtins/abort unreachable end - f64.const -6.531673581913484 f64.const 6.531673581913484 - call $std/math/test_abs + f64.const 6.531673581913484 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/abs + f64.const 6.531673581913484 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -11985,7 +13507,17 @@ end f64.const 9.267056966972586 f64.const 9.267056966972586 - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/abs + f64.const 9.267056966972586 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -11997,7 +13529,17 @@ end f64.const 0.6619858980995045 f64.const 0.6619858980995045 - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/abs + f64.const 0.6619858980995045 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12007,9 +13549,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.4066039223853553 f64.const 0.4066039223853553 - call $std/math/test_abs + f64.const 0.4066039223853553 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/abs + f64.const 0.4066039223853553 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12021,7 +13573,17 @@ end f64.const 0.5617597462207241 f64.const 0.5617597462207241 - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/abs + f64.const 0.5617597462207241 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12033,7 +13595,17 @@ end f64.const 0.7741522965913037 f64.const 0.7741522965913037 - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/abs + f64.const 0.7741522965913037 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12043,9 +13615,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.6787637026394024 f64.const 0.6787637026394024 - call $std/math/test_abs + f64.const 0.6787637026394024 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/abs + f64.const 0.6787637026394024 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12057,7 +13639,17 @@ end f64.const 0 f64.const 0 - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/abs + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12067,9 +13659,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0 f64.const 0 - call $std/math/test_abs + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/abs + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12081,7 +13683,17 @@ end f64.const 1 f64.const 1 - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/abs + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12091,9 +13703,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1 f64.const 1 - call $std/math/test_abs + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/abs + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12105,7 +13727,17 @@ end f64.const inf f64.const inf - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/abs + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12115,9 +13747,19 @@ call $~lib/builtins/abort unreachable end - f64.const -inf f64.const inf - call $std/math/test_abs + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/abs + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12129,7 +13771,17 @@ end f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 - call $std/math/test_abs + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/abs + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12361,9 +14013,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12374,9 +14036,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12387,9 +14059,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12400,9 +14082,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12413,9 +14105,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12426,9 +14128,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.acos f64.const 0.8473310828433507 f64.const -0.41553276777267456 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/acos + f64.const 0.8473310828433507 + f64.const -0.41553276777267456 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12439,9 +14151,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.acos f64.const 1.989530071088669 f64.const 0.4973946213722229 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/acos + f64.const 1.989530071088669 + f64.const 0.4973946213722229 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12452,9 +14174,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.acos f64.const 0.9742849645674904 f64.const -0.4428897500038147 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/acos + f64.const 0.9742849645674904 + f64.const -0.4428897500038147 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12465,9 +14197,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.acos f64.const 0.6854215158636222 f64.const -0.12589527666568756 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/acos + f64.const 0.6854215158636222 + f64.const -0.12589527666568756 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12478,9 +14220,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.acos f64.const 2.316874138205964 f64.const -0.17284949123859406 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/acos + f64.const 2.316874138205964 + f64.const -0.17284949123859406 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12491,9 +14243,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.acos f64.const 1.5707963267948966 f64.const -0.27576595544815063 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/acos + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12504,9 +14266,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.acos f64.const 3.141592653589793 f64.const -0.27576595544815063 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/acos + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12517,9 +14289,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.acos f64.const 0 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/acos + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12530,9 +14312,19 @@ unreachable end f64.const 1.0000000000000002 + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 1.0000000000000002 + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12543,9 +14335,19 @@ unreachable end f64.const -1.0000000000000002 + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -1.0000000000000002 + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12556,9 +14358,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12569,9 +14381,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12582,9 +14404,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.acos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12595,9 +14427,19 @@ unreachable end f64.const -0.5309227209592985 + call $~lib/math/NativeMath.acos f64.const 2.1304853799705463 f64.const 0.1391008496284485 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const -0.5309227209592985 + call $~lib/bindings/Math/acos + f64.const 2.1304853799705463 + f64.const 0.1391008496284485 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12608,9 +14450,19 @@ unreachable end f64.const 0.4939556746399746 + call $~lib/math/NativeMath.acos f64.const 1.0541629875851946 f64.const 0.22054767608642578 - call $std/math/test_acos + call $std/math/check + if (result i32) + f64.const 0.4939556746399746 + call $~lib/bindings/Math/acos + f64.const 1.0541629875851946 + f64.const 0.22054767608642578 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -12621,10 +14473,9 @@ unreachable end f32.const -8.066848754882812 - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12635,10 +14486,9 @@ unreachable end f32.const 4.345239639282227 - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12649,10 +14499,9 @@ unreachable end f32.const -8.381433486938477 - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12663,10 +14512,9 @@ unreachable end f32.const -6.531673431396484 - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12677,10 +14525,9 @@ unreachable end f32.const 9.267057418823242 - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12691,10 +14538,9 @@ unreachable end f32.const 0.6619858741760254 - call $~lib/math/NativeMathf.acos f32.const 0.8473311066627502 f32.const -0.13588131964206696 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12705,10 +14551,9 @@ unreachable end f32.const -0.40660393238067627 - call $~lib/math/NativeMathf.acos f32.const 1.989530086517334 f32.const 0.03764917701482773 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12719,10 +14564,9 @@ unreachable end f32.const 0.5617597699165344 - call $~lib/math/NativeMathf.acos f32.const 0.9742849469184875 f32.const 0.18443739414215088 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12733,10 +14577,9 @@ unreachable end f32.const 0.7741522789001465 - call $~lib/math/NativeMathf.acos f32.const 0.6854215264320374 f32.const -0.29158344864845276 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12747,10 +14590,9 @@ unreachable end f32.const -0.6787636876106262 - call $~lib/math/NativeMathf.acos f32.const 2.3168740272521973 f32.const -0.3795364499092102 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12761,10 +14603,9 @@ unreachable end f32.const 0 - call $~lib/math/NativeMathf.acos f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12775,10 +14616,9 @@ unreachable end f32.const -1 - call $~lib/math/NativeMathf.acos f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12789,10 +14629,9 @@ unreachable end f32.const 1 - call $~lib/math/NativeMathf.acos f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12803,10 +14642,9 @@ unreachable end f32.const 1.0000001192092896 - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12817,10 +14655,9 @@ unreachable end f32.const -1.0000001192092896 - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12831,10 +14668,9 @@ unreachable end f32.const inf - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12845,10 +14681,9 @@ unreachable end f32.const -inf - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12859,10 +14694,9 @@ unreachable end f32.const nan:0x400000 - call $~lib/math/NativeMathf.acos f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12873,10 +14707,9 @@ unreachable end f32.const 0.49965065717697144 - call $~lib/math/NativeMathf.acos f32.const 1.0476008653640747 f32.const -0.21161814033985138 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12887,10 +14720,9 @@ unreachable end f32.const -0.5051405429840088 - call $~lib/math/NativeMathf.acos f32.const 2.1003410816192627 f32.const -0.20852705836296082 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -12901,10 +14733,9 @@ unreachable end f32.const -0.5189794898033142 - call $~lib/math/NativeMathf.acos f32.const 2.116452932357788 f32.const -0.14600826799869537 - call $std/math/check + call $std/math/test_acosf i32.eqz if i32.const 0 @@ -13409,9 +15240,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13422,9 +15263,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13435,9 +15286,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13448,9 +15309,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13461,9 +15332,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13474,9 +15355,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.asin f64.const 0.7234652439515459 f64.const -0.13599912822246552 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/asin + f64.const 0.7234652439515459 + f64.const -0.13599912822246552 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13487,9 +15378,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.asin f64.const -0.41873374429377225 f64.const -0.09264230728149414 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/asin + f64.const -0.41873374429377225 + f64.const -0.09264230728149414 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13500,9 +15401,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.asin f64.const 0.5965113622274062 f64.const -0.10864213854074478 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/asin + f64.const 0.5965113622274062 + f64.const -0.10864213854074478 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13513,9 +15424,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.asin f64.const 0.8853748109312743 f64.const -0.4256366193294525 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/asin + f64.const 0.8853748109312743 + f64.const -0.4256366193294525 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13526,9 +15447,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.asin f64.const -0.7460778114110673 f64.const 0.13986606895923615 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/asin + f64.const -0.7460778114110673 + f64.const 0.13986606895923615 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13539,9 +15470,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.asin f64.const 1.5707963267948966 f64.const -0.27576595544815063 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/asin + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13552,9 +15493,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.asin f64.const -1.5707963267948966 f64.const 0.27576595544815063 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/asin + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13565,9 +15516,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.asin f64.const 0 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/asin + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13578,9 +15539,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.asin f64.const -0 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/asin + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13591,9 +15562,19 @@ unreachable end f64.const 1.0000000000000002 + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 1.0000000000000002 + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13604,9 +15585,19 @@ unreachable end f64.const -1.0000000000000002 + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -1.0000000000000002 + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13617,9 +15608,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13630,9 +15631,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13643,9 +15654,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.asin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -13656,9 +15677,19 @@ unreachable end f64.const 0.5073043929119148 + call $~lib/math/NativeMath.asin f64.const 0.5320538997772349 f64.const -0.16157317161560059 - call $std/math/test_asin + call $std/math/check + if (result i32) + f64.const 0.5073043929119148 + call $~lib/bindings/Math/asin + f64.const 0.5320538997772349 + f64.const -0.16157317161560059 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14319,9 +16350,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.atan f64.const -1.4474613762633468 f64.const 0.14857111871242523 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/atan + f64.const -1.4474613762633468 + f64.const 0.14857111871242523 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14332,9 +16373,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.atan f64.const 1.344597927114538 f64.const -0.08170335739850998 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/atan + f64.const 1.344597927114538 + f64.const -0.08170335739850998 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14345,9 +16396,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.atan f64.const -1.4520463463295539 f64.const -0.07505480200052261 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/atan + f64.const -1.4520463463295539 + f64.const -0.07505480200052261 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14358,9 +16419,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.atan f64.const -1.4188758658752532 f64.const -0.057633496820926666 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/atan + f64.const -1.4188758658752532 + f64.const -0.057633496820926666 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14371,9 +16442,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.atan f64.const 1.463303145448706 f64.const 0.1606956422328949 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/atan + f64.const 1.463303145448706 + f64.const 0.1606956422328949 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14384,9 +16465,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.atan f64.const 0.5847550670238325 f64.const 0.4582556486129761 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/atan + f64.const 0.5847550670238325 + f64.const 0.4582556486129761 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14397,9 +16488,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.atan f64.const -0.3861864177552131 f64.const -0.2574281692504883 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/atan + f64.const -0.3861864177552131 + f64.const -0.2574281692504883 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14410,9 +16511,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.atan f64.const 0.5118269531628881 f64.const -0.11444277316331863 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/atan + f64.const 0.5118269531628881 + f64.const -0.11444277316331863 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14423,9 +16534,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.atan f64.const 0.6587802431653822 f64.const -0.11286488175392151 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/atan + f64.const 0.6587802431653822 + f64.const -0.11286488175392151 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14436,9 +16557,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.atan f64.const -0.5963307826973472 f64.const -0.2182842344045639 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/atan + f64.const -0.5963307826973472 + f64.const -0.2182842344045639 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14449,9 +16580,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.atan f64.const 0 f64.const 0 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/atan + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14462,9 +16603,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.atan f64.const -0 f64.const 0 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/atan + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14475,9 +16626,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.atan f64.const 0.7853981633974483 f64.const -0.27576595544815063 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/atan + f64.const 0.7853981633974483 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14488,9 +16649,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.atan f64.const -0.7853981633974483 f64.const 0.27576595544815063 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/atan + f64.const -0.7853981633974483 + f64.const 0.27576595544815063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14501,9 +16672,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.atan f64.const 1.5707963267948966 f64.const -0.27576595544815063 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/atan + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14514,9 +16695,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.atan f64.const -1.5707963267948966 f64.const 0.27576595544815063 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/atan + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14527,9 +16718,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.atan f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/atan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -14540,9 +16741,19 @@ unreachable end f64.const 0.6929821535674624 + call $~lib/math/NativeMath.atan f64.const 0.6060004555152562 f64.const -0.17075790464878082 - call $std/math/test_atan + call $std/math/check + if (result i32) + f64.const 0.6929821535674624 + call $~lib/bindings/Math/atan + f64.const 0.6060004555152562 + f64.const -0.17075790464878082 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -15976,10 +18187,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -15991,10 +18201,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16006,10 +18215,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16021,10 +18229,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16036,10 +18243,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16051,10 +18257,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16066,10 +18271,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16081,10 +18285,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16096,10 +18299,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16111,10 +18313,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16126,10 +18327,9 @@ end f32.const 0 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16141,10 +18341,9 @@ end f32.const 0 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16156,10 +18355,9 @@ end f32.const 0 f32.const -1 - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16171,10 +18369,9 @@ end f32.const 0 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16186,10 +18383,9 @@ end f32.const 0 f32.const 1 - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16201,10 +18397,9 @@ end f32.const 0 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16216,10 +18411,9 @@ end f32.const -0 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16231,10 +18425,9 @@ end f32.const -0 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16246,10 +18439,9 @@ end f32.const -0 f32.const -1 - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16261,10 +18453,9 @@ end f32.const -0 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16276,10 +18467,9 @@ end f32.const -0 f32.const 1 - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16291,10 +18481,9 @@ end f32.const -0 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16306,10 +18495,9 @@ end f32.const -1 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16321,10 +18509,9 @@ end f32.const -1 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16336,10 +18523,9 @@ end f32.const 1 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16351,10 +18537,9 @@ end f32.const 1 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16366,10 +18551,9 @@ end f32.const -1 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16381,10 +18565,9 @@ end f32.const 1 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16396,10 +18579,9 @@ end f32.const -1 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16411,10 +18593,9 @@ end f32.const 1 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16426,10 +18607,9 @@ end f32.const inf f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16441,10 +18621,9 @@ end f32.const -inf f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16456,10 +18635,9 @@ end f32.const inf f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0.7853981852531433 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16471,10 +18649,9 @@ end f32.const inf f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 2.356194496154785 f32.const 0.02500828728079796 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16486,10 +18663,9 @@ end f32.const -inf f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0.7853981852531433 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16501,10 +18677,9 @@ end f32.const -inf f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -2.356194496154785 f32.const -0.02500828728079796 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16516,10 +18691,9 @@ 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/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16531,10 +18705,9 @@ end f32.const 1 f32.const 1701411834604692317316873e14 - call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -16805,10 +18978,9 @@ unreachable end f32.const -8.066848754882812 - call $~lib/math/NativeMathf.cbrt f32.const -2.0055553913116455 f32.const -0.44719240069389343 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16819,10 +18991,9 @@ unreachable end f32.const 4.345239639282227 - call $~lib/math/NativeMathf.cbrt f32.const 1.6318162679672241 f32.const 0.44636252522468567 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16833,10 +19004,9 @@ unreachable end f32.const -8.381433486938477 - call $~lib/math/NativeMathf.cbrt f32.const -2.0312938690185547 f32.const 0.19483426213264465 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16847,10 +19017,9 @@ unreachable end f32.const -6.531673431396484 - call $~lib/math/NativeMathf.cbrt f32.const -1.8692820072174072 f32.const -0.17075514793395996 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16861,10 +19030,9 @@ unreachable end f32.const 9.267057418823242 - call $~lib/math/NativeMathf.cbrt f32.const 2.1004576683044434 f32.const -0.36362043023109436 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16875,10 +19043,9 @@ unreachable end f32.const 0.6619858741760254 - call $~lib/math/NativeMathf.cbrt f32.const 0.8715311288833618 f32.const -0.12857209146022797 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16889,10 +19056,9 @@ unreachable end f32.const -0.40660393238067627 - call $~lib/math/NativeMathf.cbrt f32.const -0.7408390641212463 f32.const -0.4655757546424866 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16903,10 +19069,9 @@ unreachable end f32.const 0.5617597699165344 - call $~lib/math/NativeMathf.cbrt f32.const 0.8251195549964905 f32.const 0.05601907894015312 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16917,10 +19082,9 @@ unreachable end f32.const 0.7741522789001465 - call $~lib/math/NativeMathf.cbrt f32.const 0.9182102680206299 f32.const 0.45498204231262207 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16931,10 +19095,9 @@ unreachable end f32.const -0.6787636876106262 - call $~lib/math/NativeMathf.cbrt f32.const -0.8788326978683472 f32.const -0.22978967428207397 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16945,10 +19108,9 @@ unreachable end f32.const nan:0x400000 - call $~lib/math/NativeMathf.cbrt f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16959,10 +19121,9 @@ unreachable end f32.const inf - call $~lib/math/NativeMathf.cbrt f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16973,10 +19134,9 @@ unreachable end f32.const -inf - call $~lib/math/NativeMathf.cbrt f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -16987,10 +19147,9 @@ unreachable end f32.const 0 - call $~lib/math/NativeMathf.cbrt f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -17001,10 +19160,9 @@ unreachable end f32.const -0 - call $~lib/math/NativeMathf.cbrt f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -17015,10 +19173,9 @@ unreachable end f32.const 9.313225746154785e-10 - call $~lib/math/NativeMathf.cbrt f32.const 0.0009765625 f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -17029,10 +19186,9 @@ unreachable end f32.const -9.313225746154785e-10 - call $~lib/math/NativeMathf.cbrt f32.const -0.0009765625 f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -17043,10 +19199,9 @@ unreachable end f32.const 1 - call $~lib/math/NativeMathf.cbrt f32.const 1 f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -17057,10 +19212,9 @@ unreachable end f32.const -1 - call $~lib/math/NativeMathf.cbrt f32.const -1 f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -17071,10 +19225,9 @@ unreachable end f32.const 8 - call $~lib/math/NativeMathf.cbrt f32.const 2 f32.const 0 - call $std/math/check + call $std/math/test_cbrtf i32.eqz if i32.const 0 @@ -17084,9 +19237,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.06684839057968 f64.const -8 - call $std/math/test_ceil + f64.const -8 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/ceil + f64.const -8 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17096,9 +19259,19 @@ call $~lib/builtins/abort unreachable end - f64.const 4.345239849338305 f64.const 5 - call $std/math/test_ceil + f64.const 5 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/ceil + f64.const 5 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17108,9 +19281,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.38143342755525 f64.const -8 - call $std/math/test_ceil + f64.const -8 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/ceil + f64.const -8 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17120,9 +19303,19 @@ call $~lib/builtins/abort unreachable end - f64.const -6.531673581913484 f64.const -6 - call $std/math/test_ceil + f64.const -6 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/ceil + f64.const -6 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17132,9 +19325,19 @@ call $~lib/builtins/abort unreachable end - f64.const 9.267056966972586 f64.const 10 - call $std/math/test_ceil + f64.const 10 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/ceil + f64.const 10 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17144,9 +19347,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.6619858980995045 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17156,9 +19369,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.4066039223853553 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17168,9 +19391,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5617597462207241 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17180,9 +19413,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.7741522965913037 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17192,9 +19435,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.6787637026394024 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17206,7 +19459,17 @@ end f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/ceil + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17218,7 +19481,17 @@ end f64.const inf f64.const inf - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/ceil + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17230,7 +19503,17 @@ end f64.const -inf f64.const -inf - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/ceil + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17242,7 +19525,17 @@ end f64.const 0 f64.const 0 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/ceil + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17254,7 +19547,17 @@ end f64.const -0 f64.const -0 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17266,7 +19569,17 @@ end f64.const 1 f64.const 1 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17276,9 +19589,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1 - f64.const -1 - call $std/math/test_ceil + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17288,9 +19611,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17300,9 +19633,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.5 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17312,9 +19655,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.0000152587890625 f64.const 2 - call $std/math/test_ceil + f64.const 2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/Math/ceil + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17324,9 +19677,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1.0000152587890625 f64.const -1 - call $std/math/test_ceil + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/Math/ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17336,9 +19699,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999923706054688 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17348,9 +19721,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.9999923706054688 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17360,9 +19743,19 @@ call $~lib/builtins/abort unreachable end - f64.const 7.888609052210118e-31 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17372,9 +19765,19 @@ call $~lib/builtins/abort unreachable end - f64.const -7.888609052210118e-31 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17386,7 +19789,17 @@ end f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/ceil + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17398,7 +19811,17 @@ end f64.const inf f64.const inf - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/ceil + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17410,7 +19833,17 @@ end f64.const -inf f64.const -inf - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/ceil + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17422,7 +19855,17 @@ end f64.const 0 f64.const 0 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/ceil + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17434,7 +19877,17 @@ end f64.const -0 f64.const -0 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17446,7 +19899,17 @@ end f64.const 1 f64.const 1 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17458,7 +19921,17 @@ end f64.const -1 f64.const -1 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17468,9 +19941,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17480,9 +19963,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.5 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17492,9 +19985,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.0000152587890625 f64.const 2 - call $std/math/test_ceil + f64.const 2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/Math/ceil + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17504,9 +20007,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1.0000152587890625 f64.const -1 - call $std/math/test_ceil + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/Math/ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17516,9 +20029,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999923706054688 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17528,9 +20051,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.9999923706054688 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17540,9 +20073,19 @@ call $~lib/builtins/abort unreachable end - f64.const 7.888609052210118e-31 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17552,9 +20095,19 @@ call $~lib/builtins/abort unreachable end - f64.const -7.888609052210118e-31 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17566,7 +20119,17 @@ end f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/ceil + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17578,7 +20141,17 @@ end f64.const inf f64.const inf - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/ceil + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17590,7 +20163,17 @@ end f64.const -inf f64.const -inf - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/ceil + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17602,7 +20185,17 @@ end f64.const 0 f64.const 0 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/ceil + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17614,7 +20207,17 @@ end f64.const -0 f64.const -0 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17626,7 +20229,17 @@ end f64.const 1 f64.const 1 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17638,7 +20251,17 @@ end f64.const -1 f64.const -1 - call $std/math/test_ceil + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17648,9 +20271,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17660,9 +20293,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.5 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17672,9 +20315,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.0000152587890625 f64.const 2 - call $std/math/test_ceil + f64.const 2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/Math/ceil + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17684,9 +20337,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1.0000152587890625 f64.const -1 - call $std/math/test_ceil + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/Math/ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17696,9 +20359,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999923706054688 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17708,9 +20381,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.9999923706054688 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17720,9 +20403,19 @@ call $~lib/builtins/abort unreachable end - f64.const 7.888609052210118e-31 f64.const 1 - call $std/math/test_ceil + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/Math/ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -17732,9 +20425,19 @@ call $~lib/builtins/abort unreachable end - f64.const -7.888609052210118e-31 f64.const -0 - call $std/math/test_ceil + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18460,9 +21163,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.cos f64.const -0.21126281599887137 f64.const -0.10962469130754471 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/cos + f64.const -0.21126281599887137 + f64.const -0.10962469130754471 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18473,9 +21186,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.cos f64.const -0.35895602297578955 f64.const -0.10759828239679337 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/cos + f64.const -0.35895602297578955 + f64.const -0.10759828239679337 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18486,9 +21209,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.cos f64.const -0.503333091765516 f64.const -0.021430473774671555 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/cos + f64.const -0.503333091765516 + f64.const -0.021430473774671555 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18499,9 +21232,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.cos f64.const 0.9692853212503283 f64.const -0.4787876307964325 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/cos + f64.const 0.9692853212503283 + f64.const -0.4787876307964325 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18512,9 +21255,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.cos f64.const -0.9875878064788627 f64.const 0.4880668818950653 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/cos + f64.const -0.9875878064788627 + f64.const 0.4880668818950653 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18525,9 +21278,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.cos f64.const 0.7887730869248576 f64.const 0.12708666920661926 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/cos + f64.const 0.7887730869248576 + f64.const 0.12708666920661926 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18538,9 +21301,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.cos f64.const 0.9184692397007294 f64.const -0.26120713353157043 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/cos + f64.const 0.9184692397007294 + f64.const -0.26120713353157043 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18551,9 +21324,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.cos f64.const 0.8463190467415896 f64.const -0.302586168050766 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/cos + f64.const 0.8463190467415896 + f64.const -0.302586168050766 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18564,9 +21347,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.cos f64.const 0.7150139289952383 f64.const -0.08537746220827103 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/cos + f64.const 0.7150139289952383 + f64.const -0.08537746220827103 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18577,9 +21370,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.cos f64.const 0.7783494994757447 f64.const 0.30890750885009766 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/cos + f64.const 0.7783494994757447 + f64.const 0.30890750885009766 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18590,9 +21393,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18602,10 +21415,20 @@ call $~lib/builtins/abort unreachable end - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_cos + f64.const -0 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18616,9 +21439,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.cos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18629,9 +21462,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.cos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18642,9 +21485,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.cos f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18655,9 +21508,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.cos f64.const 0.5403023058681398 f64.const 0.4288286566734314 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/cos + f64.const 0.5403023058681398 + f64.const 0.4288286566734314 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18668,9 +21531,19 @@ unreachable end f64.const 2 + call $~lib/math/NativeMath.cos f64.const -0.4161468365471424 f64.const -0.35859397053718567 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2 + call $~lib/bindings/Math/cos + f64.const -0.4161468365471424 + f64.const -0.35859397053718567 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18681,9 +21554,19 @@ unreachable end f64.const 3 + call $~lib/math/NativeMath.cos f64.const -0.9899924966004454 f64.const 0.3788451552391052 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3 + call $~lib/bindings/Math/cos + f64.const -0.9899924966004454 + f64.const 0.3788451552391052 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18694,9 +21577,19 @@ unreachable end f64.const 4 + call $~lib/math/NativeMath.cos f64.const -0.6536436208636119 f64.const -0.23280560970306396 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 4 + call $~lib/bindings/Math/cos + f64.const -0.6536436208636119 + f64.const -0.23280560970306396 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18707,9 +21600,19 @@ unreachable end f64.const 5 + call $~lib/math/NativeMath.cos f64.const 0.28366218546322625 f64.const -0.3277357816696167 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 5 + call $~lib/bindings/Math/cos + f64.const 0.28366218546322625 + f64.const -0.3277357816696167 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18720,9 +21623,19 @@ unreachable end f64.const 0.1 + call $~lib/math/NativeMath.cos f64.const 0.9950041652780258 f64.const 0.49558526277542114 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.1 + call $~lib/bindings/Math/cos + f64.const 0.9950041652780258 + f64.const 0.49558526277542114 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18733,9 +21646,19 @@ unreachable end f64.const 0.2 + call $~lib/math/NativeMath.cos f64.const 0.9800665778412416 f64.const -0.02407640963792801 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.2 + call $~lib/bindings/Math/cos + f64.const 0.9800665778412416 + f64.const -0.02407640963792801 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18746,9 +21669,19 @@ unreachable end f64.const 0.3 + call $~lib/math/NativeMath.cos f64.const 0.955336489125606 f64.const -0.37772229313850403 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.3 + call $~lib/bindings/Math/cos + f64.const 0.955336489125606 + f64.const -0.37772229313850403 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18759,9 +21692,19 @@ unreachable end f64.const 0.4 + call $~lib/math/NativeMath.cos f64.const 0.9210609940028851 f64.const 0.25818485021591187 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.4 + call $~lib/bindings/Math/cos + f64.const 0.9210609940028851 + f64.const 0.25818485021591187 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18772,9 +21715,19 @@ unreachable end f64.const 0.5 + call $~lib/math/NativeMath.cos f64.const 0.8775825618903728 f64.const 0.3839152157306671 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/Math/cos + f64.const 0.8775825618903728 + f64.const 0.3839152157306671 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18785,9 +21738,19 @@ unreachable end f64.const 2.3641409746639015e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.3641409746639015e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18798,9 +21761,19 @@ unreachable end f64.const 1.1820704873319507e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1.1820704873319507e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18811,9 +21784,19 @@ unreachable end f64.const 5e-324 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18824,9 +21807,19 @@ unreachable end f64.const -5e-324 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18837,9 +21830,19 @@ unreachable end f64.const -3.14 + call $~lib/math/NativeMath.cos f64.const -0.9999987317275395 f64.const 0.3855516016483307 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -3.14 + call $~lib/bindings/Math/cos + f64.const -0.9999987317275395 + f64.const 0.3855516016483307 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18850,9 +21853,19 @@ unreachable end f64.const 8988465674311579538646525e283 + call $~lib/math/NativeMath.cos f64.const -0.826369834614148 f64.const -0.3695965111255646 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 8988465674311579538646525e283 + call $~lib/bindings/Math/cos + f64.const -0.826369834614148 + f64.const -0.3695965111255646 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18863,9 +21876,19 @@ unreachable end f64.const 1797693134862315708145274e284 + call $~lib/math/NativeMath.cos f64.const -0.9999876894265599 f64.const 0.23448343575000763 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1797693134862315708145274e284 + call $~lib/bindings/Math/cos + f64.const -0.9999876894265599 + f64.const 0.23448343575000763 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18876,9 +21899,19 @@ unreachable end f64.const -8988465674311579538646525e283 + call $~lib/math/NativeMath.cos f64.const -0.826369834614148 f64.const -0.3695965111255646 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -8988465674311579538646525e283 + call $~lib/bindings/Math/cos + f64.const -0.826369834614148 + f64.const -0.3695965111255646 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18889,9 +21922,19 @@ unreachable end f64.const 3.14 + call $~lib/math/NativeMath.cos f64.const -0.9999987317275395 f64.const 0.3855516016483307 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3.14 + call $~lib/bindings/Math/cos + f64.const -0.9999987317275395 + f64.const 0.3855516016483307 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18902,9 +21945,19 @@ unreachable end f64.const 3.1415 + call $~lib/math/NativeMath.cos f64.const -0.9999999957076562 f64.const -0.30608975887298584 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3.1415 + call $~lib/bindings/Math/cos + f64.const -0.9999999957076562 + f64.const -0.30608975887298584 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18915,9 +21968,19 @@ unreachable end f64.const 3.141592 + call $~lib/math/NativeMath.cos f64.const -0.9999999999997864 f64.const 0.15403328835964203 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3.141592 + call $~lib/bindings/Math/cos + f64.const -0.9999999999997864 + f64.const 0.15403328835964203 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18928,9 +21991,19 @@ unreachable end f64.const 3.14159265 + call $~lib/math/NativeMath.cos f64.const -1 f64.const -0.02901807427406311 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3.14159265 + call $~lib/bindings/Math/cos + f64.const -1 + f64.const -0.02901807427406311 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18941,9 +22014,19 @@ unreachable end f64.const 3.1415926535 + call $~lib/math/NativeMath.cos f64.const -1 f64.const -1.8155848010792397e-05 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3.1415926535 + call $~lib/bindings/Math/cos + f64.const -1 + f64.const -1.8155848010792397e-05 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18954,9 +22037,19 @@ unreachable end f64.const 3.141592653589 + call $~lib/math/NativeMath.cos f64.const -1 f64.const -1.4169914130945926e-09 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3.141592653589 + call $~lib/bindings/Math/cos + f64.const -1 + f64.const -1.4169914130945926e-09 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18967,9 +22060,19 @@ unreachable end f64.const 3.14159265358979 + call $~lib/math/NativeMath.cos f64.const -1 f64.const -2.350864897985184e-14 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3.14159265358979 + call $~lib/bindings/Math/cos + f64.const -1 + f64.const -2.350864897985184e-14 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18980,9 +22083,19 @@ unreachable end f64.const 3.141592653589793 + call $~lib/math/NativeMath.cos f64.const -1 f64.const -3.377158741883318e-17 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 3.141592653589793 + call $~lib/bindings/Math/cos + f64.const -1 + f64.const -3.377158741883318e-17 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -18993,9 +22106,19 @@ unreachable end f64.const 1.57 + call $~lib/math/NativeMath.cos f64.const 7.963267107332633e-04 f64.const 0.2968159317970276 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1.57 + call $~lib/bindings/Math/cos + f64.const 7.963267107332633e-04 + f64.const 0.2968159317970276 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19006,9 +22129,19 @@ unreachable end f64.const 1.570796 + call $~lib/math/NativeMath.cos f64.const 3.2679489653813835e-07 f64.const -0.32570895552635193 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1.570796 + call $~lib/bindings/Math/cos + f64.const 3.2679489653813835e-07 + f64.const -0.32570895552635193 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19019,9 +22152,19 @@ unreachable end f64.const 1.5707963267 + call $~lib/math/NativeMath.cos f64.const 9.489659630678013e-11 f64.const -0.27245646715164185 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1.5707963267 + call $~lib/bindings/Math/cos + f64.const 9.489659630678013e-11 + f64.const -0.27245646715164185 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19032,9 +22175,19 @@ unreachable end f64.const 1.57079632679489 + call $~lib/math/NativeMath.cos f64.const 6.722570487708307e-15 f64.const -0.10747683793306351 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1.57079632679489 + call $~lib/bindings/Math/cos + f64.const 6.722570487708307e-15 + f64.const -0.10747683793306351 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19045,9 +22198,19 @@ unreachable end f64.const 1.5707963267948966 + call $~lib/math/NativeMath.cos f64.const 6.123233995736766e-17 f64.const 0.12148229777812958 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1.5707963267948966 + call $~lib/bindings/Math/cos + f64.const 6.123233995736766e-17 + f64.const 0.12148229777812958 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19058,9 +22221,19 @@ unreachable end f64.const 0.6700635199486106 + call $~lib/math/NativeMath.cos f64.const 0.7837822193016158 f64.const -0.07278502732515335 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.6700635199486106 + call $~lib/bindings/Math/cos + f64.const 0.7837822193016158 + f64.const -0.07278502732515335 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19071,9 +22244,19 @@ unreachable end f64.const 0.5343890189437553 + call $~lib/math/NativeMath.cos f64.const 0.8605799719039517 f64.const -0.48434028029441833 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.5343890189437553 + call $~lib/bindings/Math/cos + f64.const 0.8605799719039517 + f64.const -0.48434028029441833 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19084,9 +22267,19 @@ unreachable end f64.const 0.43999702754890085 + call $~lib/math/NativeMath.cos f64.const 0.9047529293001976 f64.const 0.029777472838759422 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.43999702754890085 + call $~lib/bindings/Math/cos + f64.const 0.9047529293001976 + f64.const 0.029777472838759422 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19097,9 +22290,19 @@ unreachable end f64.const 0.9902840844687313 + call $~lib/math/NativeMath.cos f64.const 0.5484523364480768 f64.const 0.19765280187129974 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.9902840844687313 + call $~lib/bindings/Math/cos + f64.const 0.5484523364480768 + f64.const 0.19765280187129974 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19110,9 +22313,19 @@ unreachable end f64.const 0.45381447534338915 + call $~lib/math/NativeMath.cos f64.const 0.8987813902263783 f64.const -0.017724866047501564 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.45381447534338915 + call $~lib/bindings/Math/cos + f64.const 0.8987813902263783 + f64.const -0.017724866047501564 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19123,9 +22336,19 @@ unreachable end f64.const 0.4609888813583589 + call $~lib/math/NativeMath.cos f64.const 0.8956130474713057 f64.const 0.36449819803237915 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.4609888813583589 + call $~lib/bindings/Math/cos + f64.const 0.8956130474713057 + f64.const 0.36449819803237915 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19136,9 +22359,19 @@ unreachable end f64.const 0.9285434097956422 + call $~lib/math/NativeMath.cos f64.const 0.5990009794292984 f64.const -0.2899416387081146 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.9285434097956422 + call $~lib/bindings/Math/cos + f64.const 0.5990009794292984 + f64.const -0.2899416387081146 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19149,9 +22382,19 @@ unreachable end f64.const 0.9109092124488352 + call $~lib/math/NativeMath.cos f64.const 0.6130276692774378 f64.const -0.49353134632110596 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.9109092124488352 + call $~lib/bindings/Math/cos + f64.const 0.6130276692774378 + f64.const -0.49353134632110596 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19162,9 +22405,19 @@ unreachable end f64.const 0.8328600650359556 + call $~lib/math/NativeMath.cos f64.const 0.6727624710046357 f64.const -0.36606088280677795 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.8328600650359556 + call $~lib/bindings/Math/cos + f64.const 0.6727624710046357 + f64.const -0.36606088280677795 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19175,9 +22428,19 @@ unreachable end f64.const 0.9536201252203433 + call $~lib/math/NativeMath.cos f64.const 0.5787346183487084 f64.const -0.17089833319187164 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.9536201252203433 + call $~lib/bindings/Math/cos + f64.const 0.5787346183487084 + f64.const -0.17089833319187164 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19188,9 +22451,19 @@ unreachable end f64.const 0.8726590065457699 + call $~lib/math/NativeMath.cos f64.const 0.6427919144259047 f64.const -0.2744986116886139 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.8726590065457699 + call $~lib/bindings/Math/cos + f64.const 0.6427919144259047 + f64.const -0.2744986116886139 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19201,9 +22474,19 @@ unreachable end f64.const 0.18100447535968447 + call $~lib/math/NativeMath.cos f64.const 0.9836633656884893 f64.const 3.0195272993296385e-03 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0.18100447535968447 + call $~lib/bindings/Math/cos + f64.const 0.9836633656884893 + f64.const 3.0195272993296385e-03 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19214,9 +22497,19 @@ unreachable end f64.const 2.356194490349839 + call $~lib/math/NativeMath.cos f64.const -0.7071067812979126 f64.const -0.48278746008872986 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.356194490349839 + call $~lib/bindings/Math/cos + f64.const -0.7071067812979126 + f64.const -0.48278746008872986 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19227,9 +22520,19 @@ unreachable end f64.const 2.356194490372272 + call $~lib/math/NativeMath.cos f64.const -0.7071067813137752 f64.const -0.4866050183773041 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.356194490372272 + call $~lib/bindings/Math/cos + f64.const -0.7071067813137752 + f64.const -0.4866050183773041 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19240,9 +22543,19 @@ unreachable end f64.const 2.3561944902251115 + call $~lib/math/NativeMath.cos f64.const -0.707106781209717 f64.const -0.3533952236175537 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.3561944902251115 + call $~lib/bindings/Math/cos + f64.const -0.707106781209717 + f64.const -0.3533952236175537 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19253,9 +22566,19 @@ unreachable end f64.const 2.3561944903149996 + call $~lib/math/NativeMath.cos f64.const -0.7071067812732775 f64.const -0.41911986470222473 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.3561944903149996 + call $~lib/bindings/Math/cos + f64.const -0.7071067812732775 + f64.const -0.41911986470222473 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19266,9 +22589,19 @@ unreachable end f64.const 2.3561944903603527 + call $~lib/math/NativeMath.cos f64.const -0.707106781305347 f64.const -0.4706200063228607 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.3561944903603527 + call $~lib/bindings/Math/cos + f64.const -0.707106781305347 + f64.const -0.4706200063228607 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19279,9 +22612,19 @@ unreachable end f64.const 2.3561944903826197 + call $~lib/math/NativeMath.cos f64.const -0.7071067813210922 f64.const -0.30618351697921753 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.3561944903826197 + call $~lib/bindings/Math/cos + f64.const -0.7071067813210922 + f64.const -0.30618351697921753 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19292,9 +22635,19 @@ unreachable end f64.const 2.356194490371803 + call $~lib/math/NativeMath.cos f64.const -0.7071067813134436 f64.const -0.30564820766448975 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.356194490371803 + call $~lib/bindings/Math/cos + f64.const -0.7071067813134436 + f64.const -0.30564820766448975 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19305,9 +22658,19 @@ unreachable end f64.const 2.356194490399931 + call $~lib/math/NativeMath.cos f64.const -0.7071067813333329 f64.const -0.38845571875572205 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.356194490399931 + call $~lib/bindings/Math/cos + f64.const -0.7071067813333329 + f64.const -0.38845571875572205 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19318,9 +22681,19 @@ unreachable end f64.const 2.356194490260191 + call $~lib/math/NativeMath.cos f64.const -0.707106781234522 f64.const -0.23796851933002472 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.356194490260191 + call $~lib/bindings/Math/cos + f64.const -0.707106781234522 + f64.const -0.23796851933002472 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19331,9 +22704,19 @@ unreachable end f64.const 2.3561944904043153 + call $~lib/math/NativeMath.cos f64.const -0.7071067813364332 f64.const -0.3274589478969574 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.3561944904043153 + call $~lib/bindings/Math/cos + f64.const -0.7071067813364332 + f64.const -0.3274589478969574 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19344,9 +22727,19 @@ unreachable end f64.const 2.0943951024759446 + call $~lib/math/NativeMath.cos f64.const -0.5000000000716629 f64.const -0.41711342334747314 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.0943951024759446 + call $~lib/bindings/Math/cos + f64.const -0.5000000000716629 + f64.const -0.41711342334747314 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19357,9 +22750,19 @@ unreachable end f64.const 2.09439510243324 + call $~lib/math/NativeMath.cos f64.const -0.5000000000346797 f64.const -0.3566164970397949 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.09439510243324 + call $~lib/bindings/Math/cos + f64.const -0.5000000000346797 + f64.const -0.3566164970397949 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19370,9 +22773,19 @@ unreachable end f64.const 2.0943951025133885 + call $~lib/math/NativeMath.cos f64.const -0.5000000001040902 f64.const -0.2253485918045044 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.0943951025133885 + call $~lib/bindings/Math/cos + f64.const -0.5000000001040902 + f64.const -0.2253485918045044 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19383,9 +22796,19 @@ unreachable end f64.const 2.0943951025466707 + call $~lib/math/NativeMath.cos f64.const -0.5000000001329135 f64.const -0.12982259690761566 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.0943951025466707 + call $~lib/bindings/Math/cos + f64.const -0.5000000001329135 + f64.const -0.12982259690761566 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19396,9 +22819,19 @@ unreachable end f64.const 2.094395102413896 + call $~lib/math/NativeMath.cos f64.const -0.5000000000179272 f64.const -0.15886764228343964 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.094395102413896 + call $~lib/bindings/Math/cos + f64.const -0.5000000000179272 + f64.const -0.15886764228343964 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19409,9 +22842,19 @@ unreachable end f64.const 2.0943951024223404 + call $~lib/math/NativeMath.cos f64.const -0.5000000000252403 f64.const -0.266656756401062 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.0943951024223404 + call $~lib/bindings/Math/cos + f64.const -0.5000000000252403 + f64.const -0.266656756401062 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19422,9 +22865,19 @@ unreachable end f64.const 2.0943951024960477 + call $~lib/math/NativeMath.cos f64.const -0.5000000000890726 f64.const -0.4652077853679657 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.0943951024960477 + call $~lib/bindings/Math/cos + f64.const -0.5000000000890726 + f64.const -0.4652077853679657 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19435,9 +22888,19 @@ unreachable end f64.const 2.0943951025173315 + call $~lib/math/NativeMath.cos f64.const -0.500000000107505 f64.const -0.46710994839668274 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.0943951025173315 + call $~lib/bindings/Math/cos + f64.const -0.500000000107505 + f64.const -0.46710994839668274 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19448,9 +22911,19 @@ unreachable end f64.const 2.094395102405924 + call $~lib/math/NativeMath.cos f64.const -0.5000000000110234 f64.const -0.2469603717327118 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.094395102405924 + call $~lib/bindings/Math/cos + f64.const -0.5000000000110234 + f64.const -0.2469603717327118 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19461,9 +22934,19 @@ unreachable end f64.const 2.094395102428558 + call $~lib/math/NativeMath.cos f64.const -0.500000000030625 f64.const -0.3799441158771515 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.094395102428558 + call $~lib/bindings/Math/cos + f64.const -0.500000000030625 + f64.const -0.3799441158771515 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19474,9 +22957,19 @@ unreachable end f64.const 8.513210770864056 + call $~lib/math/NativeMath.cos f64.const -0.6125076939987759 f64.const 0.4989966154098511 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 8.513210770864056 + call $~lib/bindings/Math/cos + f64.const -0.6125076939987759 + f64.const 0.4989966154098511 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19487,9 +22980,19 @@ unreachable end f64.const 6.802886129801017 + call $~lib/math/NativeMath.cos f64.const 0.8679677961345452 f64.const 0.4972165524959564 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 6.802886129801017 + call $~lib/bindings/Math/cos + f64.const 0.8679677961345452 + f64.const 0.4972165524959564 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19500,9 +23003,19 @@ unreachable end f64.const 9.171925393086408 + call $~lib/math/NativeMath.cos f64.const -0.9682027440424544 f64.const -0.49827584624290466 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 9.171925393086408 + call $~lib/bindings/Math/cos + f64.const -0.9682027440424544 + f64.const -0.49827584624290466 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19513,9 +23026,19 @@ unreachable end f64.const 8.854690112888573 + call $~lib/math/NativeMath.cos f64.const -0.8418535663818527 f64.const 0.4974979758262634 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 8.854690112888573 + call $~lib/bindings/Math/cos + f64.const -0.8418535663818527 + f64.const 0.4974979758262634 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19526,9 +23049,19 @@ unreachable end f64.const 9.213510813859608 + call $~lib/math/NativeMath.cos f64.const -0.9777659802838506 f64.const -0.4995604455471039 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 9.213510813859608 + call $~lib/bindings/Math/cos + f64.const -0.9777659802838506 + f64.const -0.4995604455471039 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19539,9 +23072,19 @@ unreachable end f64.const 7.782449081542151 + call $~lib/math/NativeMath.cos f64.const 0.07147156381293339 f64.const 0.49858126044273376 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 7.782449081542151 + call $~lib/bindings/Math/cos + f64.const 0.07147156381293339 + f64.const 0.49858126044273376 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19552,9 +23095,19 @@ unreachable end f64.const 7.500261332273616 + call $~lib/math/NativeMath.cos f64.const 0.34639017633458113 f64.const -0.4996210038661957 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 7.500261332273616 + call $~lib/bindings/Math/cos + f64.const 0.34639017633458113 + f64.const -0.4996210038661957 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19565,9 +23118,19 @@ unreachable end f64.const 9.121739418731588 + call $~lib/math/NativeMath.cos f64.const -0.9544341297541811 f64.const 0.4982815086841583 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 9.121739418731588 + call $~lib/bindings/Math/cos + f64.const -0.9544341297541811 + f64.const 0.4982815086841583 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19578,9 +23141,19 @@ unreachable end f64.const 6.784954020476316 + call $~lib/math/NativeMath.cos f64.const 0.8767332233166646 f64.const -0.4988083839416504 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 6.784954020476316 + call $~lib/bindings/Math/cos + f64.const 0.8767332233166646 + f64.const -0.4988083839416504 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19591,9 +23164,19 @@ unreachable end f64.const 8.770846542666664 + call $~lib/math/NativeMath.cos f64.const -0.7936984117400705 f64.const 0.4999682903289795 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 8.770846542666664 + call $~lib/bindings/Math/cos + f64.const -0.7936984117400705 + f64.const 0.4999682903289795 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19604,9 +23187,19 @@ unreachable end f64.const 9.313225746154785e-10 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0.001953125 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 9.313225746154785e-10 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0.001953125 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19617,9 +23210,19 @@ unreachable end f64.const -9.313225746154785e-10 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0.001953125 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -9.313225746154785e-10 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0.001953125 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19630,9 +23233,19 @@ unreachable end f64.const 2.2250738585072014e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.2250738585072014e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19643,9 +23256,19 @@ unreachable end f64.const -2.2250738585072014e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -2.2250738585072014e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19656,9 +23279,19 @@ unreachable end f64.const 5e-324 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19669,9 +23302,19 @@ unreachable end f64.const -5e-324 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19682,9 +23325,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19695,9 +23348,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19708,9 +23371,19 @@ unreachable end f64.const 1e-323 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1e-323 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19721,9 +23394,19 @@ unreachable end f64.const 4.4e-323 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 4.4e-323 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19734,9 +23417,19 @@ unreachable end f64.const 5.562684646268003e-309 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 5.562684646268003e-309 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19747,9 +23440,19 @@ unreachable end f64.const 1.1125369292536007e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1.1125369292536007e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19760,9 +23463,19 @@ unreachable end f64.const 2.2250738585072004e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.2250738585072004e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19773,9 +23486,19 @@ unreachable end f64.const 2.225073858507201e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.225073858507201e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19786,9 +23509,19 @@ unreachable end f64.const 2.225073858507202e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.225073858507202e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19799,9 +23532,19 @@ unreachable end f64.const 2.2250738585072024e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 2.2250738585072024e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19812,9 +23555,19 @@ unreachable end f64.const 4.4501477170144003e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 4.4501477170144003e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19825,9 +23578,19 @@ unreachable end f64.const 4.450147717014403e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 4.450147717014403e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19838,9 +23601,19 @@ unreachable end f64.const 4.450147717014406e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 4.450147717014406e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19851,9 +23624,19 @@ unreachable end f64.const 8.900295434028806e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 8.900295434028806e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19864,9 +23647,19 @@ unreachable end f64.const 7.450580596923828e-09 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0.125 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 7.450580596923828e-09 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0.125 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19877,9 +23670,19 @@ unreachable end f64.const 1.4901161193847656e-08 + call $~lib/math/NativeMath.cos f64.const 0.9999999999999999 f64.const -1.850372590034581e-17 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 1.4901161193847656e-08 + call $~lib/bindings/Math/cos + f64.const 0.9999999999999999 + f64.const -1.850372590034581e-17 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19890,9 +23693,19 @@ unreachable end f64.const 4.470348358154297e-08 + call $~lib/math/NativeMath.cos f64.const 0.999999999999999 f64.const -1.4988010832439613e-15 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const 4.470348358154297e-08 + call $~lib/bindings/Math/cos + f64.const 0.999999999999999 + f64.const -1.4988010832439613e-15 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19903,9 +23716,19 @@ unreachable end f64.const -1e-323 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -1e-323 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19916,9 +23739,19 @@ unreachable end f64.const -4.4e-323 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -4.4e-323 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19929,9 +23762,19 @@ unreachable end f64.const -5.562684646268003e-309 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -5.562684646268003e-309 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19942,9 +23785,19 @@ unreachable end f64.const -1.1125369292536007e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -1.1125369292536007e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19955,9 +23808,19 @@ unreachable end f64.const -2.2250738585072004e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -2.2250738585072004e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19968,9 +23831,19 @@ unreachable end f64.const -2.225073858507201e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -2.225073858507201e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19981,9 +23854,19 @@ unreachable end f64.const -2.225073858507202e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -2.225073858507202e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -19994,9 +23877,19 @@ unreachable end f64.const -2.2250738585072024e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -2.2250738585072024e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -20007,9 +23900,19 @@ unreachable end f64.const -4.4501477170144003e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -4.4501477170144003e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -20020,9 +23923,19 @@ unreachable end f64.const -4.450147717014403e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -4.450147717014403e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -20033,9 +23946,19 @@ unreachable end f64.const -4.450147717014406e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -4.450147717014406e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -20046,9 +23969,19 @@ unreachable end f64.const -8.900295434028806e-308 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -8.900295434028806e-308 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -20059,9 +23992,19 @@ unreachable end f64.const -7.450580596923828e-09 + call $~lib/math/NativeMath.cos f64.const 1 f64.const 0.125 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -7.450580596923828e-09 + call $~lib/bindings/Math/cos + f64.const 1 + f64.const 0.125 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -20072,9 +24015,19 @@ unreachable end f64.const -1.4901161193847656e-08 + call $~lib/math/NativeMath.cos f64.const 0.9999999999999999 f64.const -1.850372590034581e-17 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -1.4901161193847656e-08 + call $~lib/bindings/Math/cos + f64.const 0.9999999999999999 + f64.const -1.850372590034581e-17 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -20085,9 +24038,19 @@ unreachable end f64.const -4.470348358154297e-08 + call $~lib/math/NativeMath.cos f64.const 0.999999999999999 f64.const -1.4988010832439613e-15 - call $std/math/test_cos + call $std/math/check + if (result i32) + f64.const -4.470348358154297e-08 + call $~lib/bindings/Math/cos + f64.const 0.999999999999999 + f64.const -1.4988010832439613e-15 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21681,9 +25644,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.exp f64.const 3.137706068161745e-04 f64.const -0.2599197328090668 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/exp + f64.const 3.137706068161745e-04 + f64.const -0.2599197328090668 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21694,9 +25667,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.exp f64.const 77.11053017112141 f64.const -0.02792675793170929 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/exp + f64.const 77.11053017112141 + f64.const -0.02792675793170929 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21707,9 +25690,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.exp f64.const 2.290813384916323e-04 f64.const -0.24974334239959717 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/exp + f64.const 2.290813384916323e-04 + f64.const -0.24974334239959717 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21720,9 +25713,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.exp f64.const 1.4565661260931588e-03 f64.const -0.4816822409629822 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/exp + f64.const 1.4565661260931588e-03 + f64.const -0.4816822409629822 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21733,9 +25736,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.exp f64.const 10583.558245524993 f64.const 0.17696762084960938 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/exp + f64.const 10583.558245524993 + f64.const 0.17696762084960938 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21746,9 +25759,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.exp f64.const 1.9386384525571998 f64.const -0.4964246451854706 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/exp + f64.const 1.9386384525571998 + f64.const -0.4964246451854706 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21759,9 +25782,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.exp f64.const 0.6659078892838025 f64.const -0.10608318448066711 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/exp + f64.const 0.6659078892838025 + f64.const -0.10608318448066711 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21772,9 +25805,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.exp f64.const 1.7537559518626311 f64.const -0.39162111282348633 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/exp + f64.const 1.7537559518626311 + f64.const -0.39162111282348633 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21785,9 +25828,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.exp f64.const 2.1687528885129246 f64.const -0.2996125817298889 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/exp + f64.const 2.1687528885129246 + f64.const -0.2996125817298889 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21798,9 +25851,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.exp f64.const 0.5072437089402843 f64.const 0.47261738777160645 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/exp + f64.const 0.5072437089402843 + f64.const 0.47261738777160645 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21811,9 +25874,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.exp f64.const 1 f64.const 0 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/exp + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21824,9 +25897,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.exp f64.const 1 f64.const 0 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/exp + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21837,9 +25920,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.exp f64.const 2.718281828459045 f64.const -0.3255307376384735 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/exp + f64.const 2.718281828459045 + f64.const -0.3255307376384735 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21850,9 +25943,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.exp f64.const 0.36787944117144233 f64.const 0.22389651834964752 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/exp + f64.const 0.36787944117144233 + f64.const 0.22389651834964752 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21863,9 +25966,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.exp f64.const inf f64.const 0 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/exp + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21876,9 +25989,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.exp f64.const 0 f64.const 0 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/exp + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21889,9 +26012,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.exp f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/exp + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21902,9 +26035,19 @@ unreachable end f64.const 1.0397214889526365 + call $~lib/math/NativeMath.exp f64.const 2.828429155876411 f64.const 0.18803080916404724 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 1.0397214889526365 + call $~lib/bindings/Math/exp + f64.const 2.828429155876411 + f64.const 0.18803080916404724 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21915,9 +26058,19 @@ unreachable end f64.const -1.0397214889526365 + call $~lib/math/NativeMath.exp f64.const 0.35355313670217847 f64.const 0.2527272403240204 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -1.0397214889526365 + call $~lib/bindings/Math/exp + f64.const 0.35355313670217847 + f64.const 0.2527272403240204 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21928,9 +26081,19 @@ unreachable end f64.const 1.0397210121154785 + call $~lib/math/NativeMath.exp f64.const 2.8284278071766122 f64.const -0.4184139370918274 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 1.0397210121154785 + call $~lib/bindings/Math/exp + f64.const 2.8284278071766122 + f64.const -0.4184139370918274 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21941,9 +26104,19 @@ unreachable end f64.const 1.0397214889526367 + call $~lib/math/NativeMath.exp f64.const 2.8284291558764116 f64.const -0.22618377208709717 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 1.0397214889526367 + call $~lib/bindings/Math/exp + f64.const 2.8284291558764116 + f64.const -0.22618377208709717 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21954,9 +26127,19 @@ unreachable end f64.const 5e-324 + call $~lib/math/NativeMath.exp f64.const 1 f64.const 0 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/Math/exp + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21967,9 +26150,19 @@ unreachable end f64.const -5e-324 + call $~lib/math/NativeMath.exp f64.const 1 f64.const 0 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/Math/exp + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21980,9 +26173,19 @@ unreachable end f64.const 709.782712893384 + call $~lib/math/NativeMath.exp f64.const 1797693134862273196746681e284 f64.const -0.10568465292453766 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 709.782712893384 + call $~lib/bindings/Math/exp + f64.const 1797693134862273196746681e284 + f64.const -0.10568465292453766 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -21993,9 +26196,19 @@ unreachable end f64.const 709.7827128933841 + call $~lib/math/NativeMath.exp f64.const inf f64.const 0 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 709.7827128933841 + call $~lib/bindings/Math/exp + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22006,9 +26219,19 @@ unreachable end f64.const -745.1332191019411 + call $~lib/math/NativeMath.exp f64.const 5e-324 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -745.1332191019411 + call $~lib/bindings/Math/exp + f64.const 5e-324 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22019,9 +26242,19 @@ unreachable end f64.const -745.1332191019412 + call $~lib/math/NativeMath.exp f64.const 0 f64.const -0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -745.1332191019412 + call $~lib/bindings/Math/exp + f64.const 0 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22032,9 +26265,19 @@ unreachable end f64.const -708.3964185322641 + call $~lib/math/NativeMath.exp f64.const 2.2250738585072626e-308 f64.const 0.26172348856925964 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -708.3964185322641 + call $~lib/bindings/Math/exp + f64.const 2.2250738585072626e-308 + f64.const 0.26172348856925964 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22045,9 +26288,19 @@ unreachable end f64.const -708.3964185322642 + call $~lib/math/NativeMath.exp f64.const 2.2250738585070097e-308 f64.const 2.2250738585070097e-308 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -708.3964185322642 + call $~lib/bindings/Math/exp + f64.const 2.2250738585070097e-308 + f64.const 2.2250738585070097e-308 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22058,9 +26311,19 @@ unreachable end f64.const 0.5006933289508785 + call $~lib/math/NativeMath.exp f64.const 1.6498647732549399 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 0.5006933289508785 + call $~lib/bindings/Math/exp + f64.const 1.6498647732549399 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22071,9 +26334,19 @@ unreachable end f64.const 0.628493326460252 + call $~lib/math/NativeMath.exp f64.const 1.8747837631658781 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 0.628493326460252 + call $~lib/bindings/Math/exp + f64.const 1.8747837631658781 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22084,9 +26357,19 @@ unreachable end f64.const 0.837522455340574 + call $~lib/math/NativeMath.exp f64.const 2.3106351774748006 f64.const -0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 0.837522455340574 + call $~lib/bindings/Math/exp + f64.const 2.3106351774748006 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22097,9 +26380,19 @@ unreachable end f64.const 0.8504909932810999 + call $~lib/math/NativeMath.exp f64.const 2.3407958848710777 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 0.8504909932810999 + call $~lib/bindings/Math/exp + f64.const 2.3407958848710777 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22110,9 +26403,19 @@ unreachable end f64.const 1.6270060846924657 + call $~lib/math/NativeMath.exp f64.const 5.088617001442459 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 1.6270060846924657 + call $~lib/bindings/Math/exp + f64.const 5.088617001442459 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22123,9 +26426,19 @@ unreachable end f64.const 1.6744336219614115 + call $~lib/math/NativeMath.exp f64.const 5.335772228886831 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 1.6744336219614115 + call $~lib/bindings/Math/exp + f64.const 5.335772228886831 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22136,9 +26449,19 @@ unreachable end f64.const 6.657914718791208 + call $~lib/math/NativeMath.exp f64.const 778.924964819056 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 6.657914718791208 + call $~lib/bindings/Math/exp + f64.const 778.924964819056 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22149,9 +26472,19 @@ unreachable end f64.const 11.022872793631722 + call $~lib/math/NativeMath.exp f64.const 61259.41271820104 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 11.022872793631722 + call $~lib/bindings/Math/exp + f64.const 61259.41271820104 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22162,9 +26495,19 @@ unreachable end f64.const 11.411195701885317 + call $~lib/math/NativeMath.exp f64.const 90327.36165653409 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 11.411195701885317 + call $~lib/bindings/Math/exp + f64.const 90327.36165653409 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22175,9 +26518,19 @@ unreachable end f64.const 11.794490387560606 + call $~lib/math/NativeMath.exp f64.const 132520.20290772576 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 11.794490387560606 + call $~lib/bindings/Math/exp + f64.const 132520.20290772576 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22188,9 +26541,19 @@ unreachable end f64.const 412.83872756953286 + call $~lib/math/NativeMath.exp f64.const 1965989977109266413433084e155 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 412.83872756953286 + call $~lib/bindings/Math/exp + f64.const 1965989977109266413433084e155 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22201,9 +26564,19 @@ unreachable end f64.const 510.87569028483415 + call $~lib/math/NativeMath.exp f64.const 7421526272656495968225491e197 f64.const -0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const 510.87569028483415 + call $~lib/bindings/Math/exp + f64.const 7421526272656495968225491e197 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22214,9 +26587,19 @@ unreachable end f64.const -2.6589841439772853e-14 + call $~lib/math/NativeMath.exp f64.const 0.9999999999999735 f64.const 0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -2.6589841439772853e-14 + call $~lib/bindings/Math/exp + f64.const 0.9999999999999735 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22227,9 +26610,19 @@ unreachable end f64.const -2.7144952952085447e-14 + call $~lib/math/NativeMath.exp f64.const 0.9999999999999728 f64.const -0.5 - call $std/math/test_exp + call $std/math/check + if (result i32) + f64.const -2.7144952952085447e-14 + call $~lib/bindings/Math/exp + f64.const 0.9999999999999728 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22576,9 +26969,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.expm1 f64.const -0.9996862293931839 f64.const -0.2760058343410492 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/expm1 + f64.const -0.9996862293931839 + f64.const -0.2760058343410492 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22589,9 +26992,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.expm1 f64.const 76.11053017112141 f64.const -0.02792675793170929 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/expm1 + f64.const 76.11053017112141 + f64.const -0.02792675793170929 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22602,9 +27015,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.expm1 f64.const -0.9997709186615084 f64.const 0.10052496194839478 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/expm1 + f64.const -0.9997709186615084 + f64.const 0.10052496194839478 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22615,9 +27038,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.expm1 f64.const -0.9985434338739069 f64.const -0.27437829971313477 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/expm1 + f64.const -0.9985434338739069 + f64.const -0.27437829971313477 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22628,9 +27061,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.expm1 f64.const 10582.558245524993 f64.const 0.17696762084960938 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/expm1 + f64.const 10582.558245524993 + f64.const 0.17696762084960938 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22641,9 +27084,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.expm1 f64.const 0.9386384525571999 f64.const 0.007150684483349323 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/expm1 + f64.const 0.9386384525571999 + f64.const 0.007150684483349323 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22654,9 +27107,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.expm1 f64.const -0.3340921107161975 f64.const -0.21216636896133423 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/expm1 + f64.const -0.3340921107161975 + f64.const -0.21216636896133423 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22667,9 +27130,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.expm1 f64.const 0.7537559518626312 f64.const 0.21675777435302734 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/expm1 + f64.const 0.7537559518626312 + f64.const 0.21675777435302734 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22680,9 +27153,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.expm1 f64.const 1.1687528885129248 f64.const 0.4007748067378998 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/expm1 + f64.const 1.1687528885129248 + f64.const 0.4007748067378998 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22693,9 +27176,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.expm1 f64.const -0.4927562910597158 f64.const -0.05476519837975502 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/expm1 + f64.const -0.4927562910597158 + f64.const -0.05476519837975502 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22706,9 +27199,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.expm1 f64.const 0 f64.const 0 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/expm1 + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22719,9 +27222,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.expm1 f64.const -0 f64.const 0 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/expm1 + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22732,9 +27245,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.expm1 f64.const 1.7182818284590453 f64.const 0.348938524723053 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/expm1 + f64.const 1.7182818284590453 + f64.const 0.348938524723053 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22745,9 +27268,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.expm1 f64.const -0.6321205588285577 f64.const 0.11194825917482376 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/expm1 + f64.const -0.6321205588285577 + f64.const 0.11194825917482376 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22758,9 +27291,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.expm1 f64.const inf f64.const 0 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/expm1 + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22771,9 +27314,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.expm1 f64.const -1 f64.const 0 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/expm1 + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22784,9 +27337,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.expm1 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/expm1 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22797,9 +27360,19 @@ unreachable end f64.const 2.225073858507201e-308 + call $~lib/math/NativeMath.expm1 f64.const 2.225073858507201e-308 f64.const 0 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const 2.225073858507201e-308 + call $~lib/bindings/Math/expm1 + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -22810,9 +27383,19 @@ unreachable end f64.const -2.225073858507201e-308 + call $~lib/math/NativeMath.expm1 f64.const -2.225073858507201e-308 f64.const 0 - call $std/math/test_expm1 + call $std/math/check + if (result i32) + f64.const -2.225073858507201e-308 + call $~lib/bindings/Math/expm1 + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23516,10 +28099,9 @@ unreachable end f32.const -8.066848754882812 - call $~lib/math/NativeMathf.exp2 f32.const 3.7293792702257633e-03 f32.const -0.0674908235669136 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23530,10 +28112,9 @@ unreachable end f32.const 4.345239639282227 - call $~lib/math/NativeMathf.exp2 f32.const 20.32579231262207 f32.const 0.34121403098106384 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23544,10 +28125,9 @@ unreachable end f32.const -8.381433486938477 - call $~lib/math/NativeMathf.exp2 f32.const 2.9987283051013947e-03 f32.const 0.15504619479179382 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23558,10 +28138,9 @@ unreachable end f32.const -6.531673431396484 - call $~lib/math/NativeMathf.exp2 f32.const 0.010808623395860195 f32.const 0.2603940963745117 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23572,10 +28151,9 @@ unreachable end f32.const 9.267057418823242 - call $~lib/math/NativeMathf.exp2 f32.const 616.1156616210938 f32.const -0.1379322111606598 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23586,10 +28164,9 @@ unreachable end f32.const 0.6619858741760254 - call $~lib/math/NativeMathf.exp2 f32.const 1.5822590589523315 f32.const -0.427890807390213 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23600,10 +28177,9 @@ unreachable end f32.const -0.40660393238067627 - call $~lib/math/NativeMathf.exp2 f32.const 0.7543970942497253 f32.const -0.38062313199043274 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23614,10 +28190,9 @@ unreachable end f32.const 0.5617597699165344 - call $~lib/math/NativeMathf.exp2 f32.const 1.4760686159133911 f32.const 0.1507442593574524 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23628,10 +28203,9 @@ unreachable end f32.const 0.7741522789001465 - call $~lib/math/NativeMathf.exp2 f32.const 1.7101848125457764 f32.const -0.39102980494499207 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23642,10 +28216,9 @@ unreachable end f32.const -0.6787636876106262 - call $~lib/math/NativeMathf.exp2 f32.const 0.6247003674507141 f32.const -0.20904375612735748 - call $std/math/check + call $std/math/test_exp2f i32.eqz if i32.const 0 @@ -23655,9 +28228,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.06684839057968 f64.const -9 - call $std/math/test_floor + f64.const -9 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/floor + f64.const -9 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23667,9 +28250,19 @@ call $~lib/builtins/abort unreachable end - f64.const 4.345239849338305 f64.const 4 - call $std/math/test_floor + f64.const 4 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/floor + f64.const 4 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23679,9 +28272,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.38143342755525 f64.const -9 - call $std/math/test_floor + f64.const -9 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/floor + f64.const -9 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23691,9 +28294,19 @@ call $~lib/builtins/abort unreachable end - f64.const -6.531673581913484 f64.const -7 - call $std/math/test_floor + f64.const -7 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/floor + f64.const -7 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23703,9 +28316,19 @@ call $~lib/builtins/abort unreachable end - f64.const 9.267056966972586 f64.const 9 - call $std/math/test_floor + f64.const 9 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/floor + f64.const 9 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23715,9 +28338,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.6619858980995045 f64.const 0 - call $std/math/test_floor + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23727,9 +28360,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.4066039223853553 f64.const -1 - call $std/math/test_floor + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23739,9 +28382,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5617597462207241 f64.const 0 - call $std/math/test_floor + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23751,9 +28404,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.7741522965913037 f64.const 0 - call $std/math/test_floor + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23763,9 +28426,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.6787637026394024 f64.const -1 - call $std/math/test_floor + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23777,7 +28450,17 @@ end f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 - call $std/math/test_floor + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/floor + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23789,7 +28472,17 @@ end f64.const inf f64.const inf - call $std/math/test_floor + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/floor + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23801,7 +28494,17 @@ end f64.const -inf f64.const -inf - call $std/math/test_floor + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/floor + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23813,7 +28516,17 @@ end f64.const 0 f64.const 0 - call $std/math/test_floor + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23825,7 +28538,17 @@ end f64.const -0 f64.const -0 - call $std/math/test_floor + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/floor + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23837,7 +28560,17 @@ end f64.const 1 f64.const 1 - call $std/math/test_floor + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/floor + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23849,7 +28582,17 @@ end f64.const -1 f64.const -1 - call $std/math/test_floor + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23859,9 +28602,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5 f64.const 0 - call $std/math/test_floor + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/Math/floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23871,9 +28624,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.5 f64.const -1 - call $std/math/test_floor + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/Math/floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23883,9 +28646,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.0000152587890625 f64.const 1 - call $std/math/test_floor + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/Math/floor + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23895,9 +28668,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1.0000152587890625 f64.const -2 - call $std/math/test_floor + f64.const -2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/Math/floor + f64.const -2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23907,9 +28690,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999923706054688 f64.const 0 - call $std/math/test_floor + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/Math/floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23919,9 +28712,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.9999923706054688 f64.const -1 - call $std/math/test_floor + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/Math/floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23931,9 +28734,19 @@ call $~lib/builtins/abort unreachable end - f64.const 7.888609052210118e-31 f64.const 0 - call $std/math/test_floor + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/Math/floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -23943,9 +28756,19 @@ call $~lib/builtins/abort unreachable end - f64.const -7.888609052210118e-31 f64.const -1 - call $std/math/test_floor + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -24282,10 +29105,9 @@ end f64.const -8.06684839057968 f64.const 4.535662560676869 - call $~lib/math/NativeMath.hypot f64.const 9.25452742288464 f64.const -0.31188681721687317 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24297,10 +29119,9 @@ end f64.const 4.345239849338305 f64.const -8.88799136300345 - call $~lib/math/NativeMath.hypot f64.const 9.893305808328252 f64.const 0.4593673348426819 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24312,10 +29133,9 @@ end f64.const -8.38143342755525 f64.const -2.763607337379588 - call $~lib/math/NativeMath.hypot f64.const 8.825301797432132 f64.const -0.1701754331588745 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24327,10 +29147,9 @@ end f64.const -6.531673581913484 f64.const 4.567535276842744 - call $~lib/math/NativeMath.hypot f64.const 7.970265885519092 f64.const -0.3176782727241516 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24342,10 +29161,9 @@ end f64.const 9.267056966972586 f64.const 4.811392084359796 - call $~lib/math/NativeMath.hypot f64.const 10.441639651824575 f64.const -0.2693633437156677 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24357,10 +29175,9 @@ end f64.const -6.450045556060236 f64.const 0.6620717923376739 - call $~lib/math/NativeMath.hypot f64.const 6.483936052542593 f64.const 0.35618898272514343 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24372,10 +29189,9 @@ end f64.const 7.858890253041697 f64.const 0.05215452675006225 - call $~lib/math/NativeMath.hypot f64.const 7.859063309581766 f64.const 0.08044655621051788 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24387,10 +29203,9 @@ end f64.const -0.792054511984896 f64.const 7.67640268511754 - call $~lib/math/NativeMath.hypot f64.const 7.717156764899584 f64.const 0.05178084969520569 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24402,10 +29217,9 @@ end f64.const 0.615702673197924 f64.const 2.0119025790324803 - call $~lib/math/NativeMath.hypot f64.const 2.104006123874314 f64.const -0.0918039008975029 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24417,10 +29231,9 @@ end f64.const -0.5587586823609152 f64.const 0.03223983060263804 - call $~lib/math/NativeMath.hypot f64.const 0.5596880129062913 f64.const 0.1383407711982727 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24432,10 +29245,9 @@ end f64.const 3 f64.const 4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24447,10 +29259,9 @@ end f64.const -3 f64.const 4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24462,10 +29273,9 @@ end f64.const 4 f64.const 3 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24477,10 +29287,9 @@ end f64.const 4 f64.const -3 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24492,10 +29301,9 @@ end f64.const -3 f64.const -4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24507,10 +29315,9 @@ end f64.const 1797693134862315708145274e284 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const 1797693134862315708145274e284 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24522,10 +29329,9 @@ end f64.const 1797693134862315708145274e284 f64.const -0 - call $~lib/math/NativeMath.hypot f64.const 1797693134862315708145274e284 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24537,10 +29343,9 @@ end f64.const 5e-324 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const 5e-324 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24552,10 +29357,9 @@ end f64.const 5e-324 f64.const -0 - call $~lib/math/NativeMath.hypot f64.const 5e-324 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24567,10 +29371,9 @@ end f64.const inf f64.const 1 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24582,10 +29385,9 @@ end f64.const 1 f64.const inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24597,10 +29399,9 @@ end f64.const inf f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24612,10 +29413,9 @@ end f64.const nan:0x8000000000000 f64.const inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24627,10 +29427,9 @@ end f64.const -inf f64.const 1 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24642,10 +29441,9 @@ end f64.const 1 f64.const -inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24657,10 +29455,9 @@ end f64.const -inf f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24672,10 +29469,9 @@ end f64.const nan:0x8000000000000 f64.const -inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24687,10 +29483,9 @@ end f64.const nan:0x8000000000000 f64.const 1 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24702,10 +29497,9 @@ end f64.const 1 f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24717,10 +29511,9 @@ end f64.const nan:0x8000000000000 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24732,10 +29525,9 @@ end f64.const 0 f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -24747,10 +29539,9 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 - call $~lib/math/NativeMathf.hypot f32.const 9.254528045654297 f32.const 0.2735958993434906 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24762,10 +29553,9 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 - call $~lib/math/NativeMathf.hypot f32.const 9.893305778503418 f32.const 0.4530770778656006 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24777,10 +29567,9 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 - call $~lib/math/NativeMathf.hypot f32.const 8.825302124023438 f32.const 0.30755728483200073 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24792,10 +29581,9 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 - call $~lib/math/NativeMathf.hypot f32.const 7.970265865325928 f32.const 0.06785223633050919 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24807,10 +29595,9 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 - call $~lib/math/NativeMathf.hypot f32.const 10.44163990020752 f32.const -0.26776307821273804 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24822,10 +29609,9 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 - call $~lib/math/NativeMathf.hypot f32.const 6.483936309814453 f32.const 0.48381292819976807 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24837,10 +29623,9 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 - call $~lib/math/NativeMathf.hypot f32.const 7.859063148498535 f32.const 0.07413065433502197 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24852,10 +29637,9 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 - call $~lib/math/NativeMathf.hypot f32.const 7.717156887054443 f32.const 0.4940592646598816 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24867,10 +29651,9 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 - call $~lib/math/NativeMathf.hypot f32.const 2.104006052017212 f32.const -0.287089467048645 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24882,10 +29665,9 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 - call $~lib/math/NativeMathf.hypot f32.const 0.5596880316734314 f32.const 0.4191940724849701 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24897,10 +29679,9 @@ end f32.const 3 f32.const 4 - call $~lib/math/NativeMathf.hypot f32.const 5 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24912,10 +29693,9 @@ end f32.const -3 f32.const 4 - call $~lib/math/NativeMathf.hypot f32.const 5 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24927,10 +29707,9 @@ end f32.const 4 f32.const 3 - call $~lib/math/NativeMathf.hypot f32.const 5 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24942,10 +29721,9 @@ end f32.const 4 f32.const -3 - call $~lib/math/NativeMathf.hypot f32.const 5 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24957,10 +29735,9 @@ end f32.const -3 f32.const -4 - call $~lib/math/NativeMathf.hypot f32.const 5 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24972,10 +29749,9 @@ end f32.const 3402823466385288598117041e14 f32.const 0 - call $~lib/math/NativeMathf.hypot f32.const 3402823466385288598117041e14 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -24987,10 +29763,9 @@ end f32.const 3402823466385288598117041e14 f32.const -0 - call $~lib/math/NativeMathf.hypot f32.const 3402823466385288598117041e14 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25002,10 +29777,9 @@ end f32.const 1.401298464324817e-45 f32.const 0 - call $~lib/math/NativeMathf.hypot f32.const 1.401298464324817e-45 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25017,10 +29791,9 @@ end f32.const 1.401298464324817e-45 f32.const -0 - call $~lib/math/NativeMathf.hypot f32.const 1.401298464324817e-45 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25032,10 +29805,9 @@ end f32.const inf f32.const 1 - call $~lib/math/NativeMathf.hypot f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25047,10 +29819,9 @@ end f32.const 1 f32.const inf - call $~lib/math/NativeMathf.hypot f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25062,10 +29833,9 @@ end f32.const inf f32.const nan:0x400000 - call $~lib/math/NativeMathf.hypot f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25077,10 +29847,9 @@ end f32.const nan:0x400000 f32.const inf - call $~lib/math/NativeMathf.hypot f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25092,10 +29861,9 @@ end f32.const -inf f32.const 1 - call $~lib/math/NativeMathf.hypot f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25107,10 +29875,9 @@ end f32.const 1 f32.const -inf - call $~lib/math/NativeMathf.hypot f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25122,10 +29889,9 @@ end f32.const -inf f32.const nan:0x400000 - call $~lib/math/NativeMathf.hypot f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25137,10 +29903,9 @@ end f32.const nan:0x400000 f32.const -inf - call $~lib/math/NativeMathf.hypot f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25152,10 +29917,9 @@ end f32.const nan:0x400000 f32.const 1 - call $~lib/math/NativeMathf.hypot f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25167,10 +29931,9 @@ end f32.const 1 f32.const nan:0x400000 - call $~lib/math/NativeMathf.hypot f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_hypotf i32.eqz if i32.const 0 @@ -25181,9 +29944,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25194,9 +29967,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.log f64.const 1.4690809584224322 f64.const -0.3412533402442932 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/log + f64.const 1.4690809584224322 + f64.const -0.3412533402442932 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25207,9 +29990,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25220,9 +30013,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25233,9 +30036,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.log f64.const 2.2264658498795615 f64.const 0.3638114035129547 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/log + f64.const 2.2264658498795615 + f64.const 0.3638114035129547 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25246,9 +30059,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.log f64.const -0.4125110252365137 f64.const -0.29108747839927673 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/log + f64.const -0.4125110252365137 + f64.const -0.29108747839927673 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25259,9 +30082,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25272,9 +30105,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.log f64.const -0.5766810183195862 f64.const -0.10983199626207352 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/log + f64.const -0.5766810183195862 + f64.const -0.10983199626207352 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25285,9 +30128,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.log f64.const -0.2559866591263865 f64.const -0.057990044355392456 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/log + f64.const -0.2559866591263865 + f64.const -0.057990044355392456 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25298,9 +30151,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25311,9 +30174,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.log f64.const -inf f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/log + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25324,9 +30197,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.log f64.const -inf f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/log + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25337,9 +30220,19 @@ unreachable end f64.const -7.888609052210118e-31 + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25350,9 +30243,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.log f64.const 0 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/log + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25363,9 +30266,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25376,9 +30289,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.log f64.const inf f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/log + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25389,9 +30312,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25402,9 +30335,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.log f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -25873,10 +30816,9 @@ unreachable end f32.const -8.066848754882812 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25887,10 +30829,9 @@ unreachable end f32.const 4.345239639282227 - call $~lib/math/NativeMathf.log10 f32.const 0.6380137205123901 f32.const -0.20476758480072021 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25901,10 +30842,9 @@ unreachable end f32.const -8.381433486938477 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25915,10 +30855,9 @@ unreachable end f32.const -6.531673431396484 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25929,10 +30868,9 @@ unreachable end f32.const 9.267057418823242 - call $~lib/math/NativeMathf.log10 f32.const 0.9669418334960938 f32.const -0.34273025393486023 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25943,10 +30881,9 @@ unreachable end f32.const 0.6619858741760254 - call $~lib/math/NativeMathf.log10 f32.const -0.1791512817144394 f32.const -0.27078554034233093 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25957,10 +30894,9 @@ unreachable end f32.const -0.40660393238067627 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25971,10 +30907,9 @@ unreachable end f32.const 0.5617597699165344 - call $~lib/math/NativeMathf.log10 f32.const -0.25044935941696167 f32.const 0.2126826047897339 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25985,10 +30920,9 @@ unreachable end f32.const 0.7741522789001465 - call $~lib/math/NativeMathf.log10 f32.const -0.1111735999584198 f32.const 0.46515095233917236 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -25999,10 +30933,9 @@ unreachable end f32.const -0.6787636876106262 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26013,10 +30946,9 @@ unreachable end f32.const 0 - call $~lib/math/NativeMathf.log10 f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26027,10 +30959,9 @@ unreachable end f32.const -0 - call $~lib/math/NativeMathf.log10 f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26041,10 +30972,9 @@ unreachable end f32.const -7.888609052210118e-31 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26055,10 +30985,9 @@ unreachable end f32.const 1 - call $~lib/math/NativeMathf.log10 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26069,10 +30998,9 @@ unreachable end f32.const -1 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26083,10 +31011,9 @@ unreachable end f32.const inf - call $~lib/math/NativeMathf.log10 f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26097,10 +31024,9 @@ unreachable end f32.const -inf - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26111,10 +31037,9 @@ unreachable end f32.const nan:0x400000 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -26125,9 +31050,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.log1p f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26138,9 +31073,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.log1p f64.const 1.6762064170601734 f64.const 0.46188199520111084 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/log1p + f64.const 1.6762064170601734 + f64.const 0.46188199520111084 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26151,9 +31096,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.log1p f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26164,9 +31119,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.log1p f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26177,9 +31142,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.log1p f64.const 2.3289404168523826 f64.const -0.411114901304245 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/log1p + f64.const 2.3289404168523826 + f64.const -0.411114901304245 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26190,9 +31165,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.log1p f64.const 0.5080132114992477 f64.const -0.29306045174598694 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/log1p + f64.const 0.5080132114992477 + f64.const -0.29306045174598694 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26203,9 +31188,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.log1p f64.const -0.5218931811663979 f64.const -0.25825726985931396 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/log1p + f64.const -0.5218931811663979 + f64.const -0.25825726985931396 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26216,9 +31211,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.log1p f64.const 0.4458132279488102 f64.const -0.13274887204170227 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/log1p + f64.const 0.4458132279488102 + f64.const -0.13274887204170227 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26229,9 +31234,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.log1p f64.const 0.5733227294648414 f64.const 0.02716583013534546 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/log1p + f64.const 0.5733227294648414 + f64.const 0.02716583013534546 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26242,9 +31257,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.log1p f64.const -1.1355782978128564 f64.const 0.2713092863559723 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/log1p + f64.const -1.1355782978128564 + f64.const 0.2713092863559723 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26255,9 +31280,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.log1p f64.const 0 f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/log1p + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26268,9 +31303,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.log1p f64.const -0 f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/log1p + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26281,9 +31326,19 @@ unreachable end f64.const -7.888609052210118e-31 + call $~lib/math/NativeMath.log1p f64.const -7.888609052210118e-31 f64.const 1.7763568394002505e-15 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/log1p + f64.const -7.888609052210118e-31 + f64.const 1.7763568394002505e-15 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26294,9 +31349,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.log1p f64.const 0.6931471805599453 f64.const -0.2088811695575714 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/log1p + f64.const 0.6931471805599453 + f64.const -0.2088811695575714 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26307,9 +31372,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.log1p f64.const -inf f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/log1p + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26320,9 +31395,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.log1p f64.const inf f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/log1p + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26333,9 +31418,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.log1p f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26346,9 +31441,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.log1p f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log1p + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26625,9 +31730,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26638,9 +31753,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.log2 f64.const 2.1194358133804485 f64.const -0.10164877772331238 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/log2 + f64.const 2.1194358133804485 + f64.const -0.10164877772331238 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26651,9 +31776,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26664,9 +31799,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26677,9 +31822,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.log2 f64.const 3.2121112403298744 f64.const -0.15739446878433228 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/log2 + f64.const 3.2121112403298744 + f64.const -0.15739446878433228 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26690,9 +31845,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.log2 f64.const -0.5951276104207402 f64.const 0.3321485221385956 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/log2 + f64.const -0.5951276104207402 + f64.const 0.3321485221385956 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26703,9 +31868,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26716,9 +31891,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.log2 f64.const -0.8319748453044644 f64.const 0.057555437088012695 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/log2 + f64.const -0.8319748453044644 + f64.const 0.057555437088012695 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26729,9 +31914,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.log2 f64.const -0.36931068365537134 f64.const -0.19838279485702515 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/log2 + f64.const -0.36931068365537134 + f64.const -0.19838279485702515 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26742,9 +31937,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26755,9 +31960,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.log2 f64.const -inf f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/log2 + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26768,9 +31983,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.log2 f64.const -inf f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/log2 + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26781,9 +32006,19 @@ unreachable end f64.const -7.888609052210118e-31 + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26794,9 +32029,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.log2 f64.const 0 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/log2 + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26807,9 +32052,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26820,9 +32075,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.log2 f64.const inf f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/log2 + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26833,9 +32098,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26846,9 +32121,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.log2 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log2 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -26859,10 +32144,9 @@ unreachable end f32.const -8.066848754882812 - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26873,10 +32157,9 @@ unreachable end f32.const 4.345239639282227 - call $~lib/math/NativeMathf.log2 f32.const 2.1194357872009277 f32.const 0.18271538615226746 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26887,10 +32170,9 @@ unreachable end f32.const -8.381433486938477 - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26901,10 +32183,9 @@ unreachable end f32.const -6.531673431396484 - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26915,10 +32196,9 @@ unreachable end f32.const 9.267057418823242 - call $~lib/math/NativeMathf.log2 f32.const 3.212111234664917 f32.const -0.3188050389289856 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26929,10 +32209,9 @@ unreachable end f32.const 0.6619858741760254 - call $~lib/math/NativeMathf.log2 f32.const -0.5951276421546936 f32.const 0.34231460094451904 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26943,10 +32222,9 @@ unreachable end f32.const -0.40660393238067627 - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26957,10 +32235,9 @@ unreachable end f32.const 0.5617597699165344 - call $~lib/math/NativeMathf.log2 f32.const -0.8319748044013977 f32.const -0.33473604917526245 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26971,10 +32248,9 @@ unreachable end f32.const 0.7741522789001465 - call $~lib/math/NativeMathf.log2 f32.const -0.3693107068538666 f32.const 0.3278401792049408 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26985,10 +32261,9 @@ unreachable end f32.const -0.6787636876106262 - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -26999,10 +32274,9 @@ unreachable end f32.const 0 - call $~lib/math/NativeMathf.log2 f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -27013,10 +32287,9 @@ unreachable end f32.const -0 - call $~lib/math/NativeMathf.log2 f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -27027,10 +32300,9 @@ unreachable end f32.const -7.888609052210118e-31 - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -27041,10 +32313,9 @@ unreachable end f32.const 1 - call $~lib/math/NativeMathf.log2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -27055,10 +32326,9 @@ unreachable end f32.const -1 - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -27069,10 +32339,9 @@ unreachable end f32.const inf - call $~lib/math/NativeMathf.log2 f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -27083,10 +32352,9 @@ unreachable end f32.const -inf - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -27097,10 +32365,9 @@ unreachable end f32.const nan:0x400000 - call $~lib/math/NativeMathf.log2 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log2f i32.eqz if i32.const 0 @@ -32442,10 +37709,8 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 - call $~lib/math/NativeMathf.mod f32.const -3.531186103820801 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32457,10 +37722,8 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 - call $~lib/math/NativeMathf.mod f32.const 4.345239639282227 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32472,10 +37735,8 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 - call $~lib/math/NativeMathf.mod f32.const -0.09061169624328613 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32487,10 +37748,8 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 - call $~lib/math/NativeMathf.mod f32.const -1.9641380310058594 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32502,10 +37761,8 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 - call $~lib/math/NativeMathf.mod f32.const 4.455665111541748 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32517,10 +37774,8 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 - call $~lib/math/NativeMathf.mod f32.const -0.49139970541000366 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32532,10 +37787,8 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 - call $~lib/math/NativeMathf.mod f32.const 0.0357111394405365 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32547,10 +37800,8 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 - call $~lib/math/NativeMathf.mod f32.const -0.7920545339584351 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32562,10 +37813,8 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 - call $~lib/math/NativeMathf.mod f32.const 0.6157026886940002 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32577,10 +37826,8 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 - call $~lib/math/NativeMathf.mod f32.const -0.010681532323360443 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32592,10 +37839,8 @@ end f32.const 0 f32.const 1 - call $~lib/math/NativeMathf.mod - f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32607,10 +37852,8 @@ end f32.const -0 f32.const 1 - call $~lib/math/NativeMathf.mod f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32622,10 +37865,8 @@ end f32.const 0.5 f32.const 1 - call $~lib/math/NativeMathf.mod f32.const 0.5 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32637,10 +37878,8 @@ end f32.const -0.5 f32.const 1 - call $~lib/math/NativeMathf.mod f32.const -0.5 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32652,10 +37891,8 @@ end f32.const 1 f32.const 1 - call $~lib/math/NativeMathf.mod - f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32667,10 +37904,8 @@ end f32.const -1 f32.const 1 - call $~lib/math/NativeMathf.mod f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32682,10 +37917,8 @@ end f32.const 1.5 f32.const 1 - call $~lib/math/NativeMathf.mod f32.const 0.5 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32697,10 +37930,8 @@ end f32.const -1.5 f32.const 1 - call $~lib/math/NativeMathf.mod f32.const -0.5 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32712,10 +37943,8 @@ end f32.const 2 f32.const 1 - call $~lib/math/NativeMathf.mod - f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32727,10 +37956,8 @@ end f32.const -2 f32.const 1 - call $~lib/math/NativeMathf.mod f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32742,10 +37969,8 @@ end f32.const inf f32.const 1 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32757,10 +37982,8 @@ end f32.const -inf f32.const 1 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32772,10 +37995,8 @@ end f32.const nan:0x400000 f32.const 1 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32787,10 +38008,8 @@ end f32.const 0 f32.const -1 - call $~lib/math/NativeMathf.mod - f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32802,10 +38021,8 @@ end f32.const -0 f32.const -1 - call $~lib/math/NativeMathf.mod f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32817,10 +38034,8 @@ end f32.const 0.5 f32.const -1 - call $~lib/math/NativeMathf.mod f32.const 0.5 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32832,10 +38047,8 @@ end f32.const -0.5 f32.const -1 - call $~lib/math/NativeMathf.mod f32.const -0.5 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32847,10 +38060,8 @@ end f32.const 1 f32.const -1 - call $~lib/math/NativeMathf.mod - f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32862,10 +38073,8 @@ end f32.const -1 f32.const -1 - call $~lib/math/NativeMathf.mod f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32877,10 +38086,8 @@ end f32.const 1.5 f32.const -1 - call $~lib/math/NativeMathf.mod f32.const 0.5 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32892,10 +38099,8 @@ end f32.const -1.5 f32.const -1 - call $~lib/math/NativeMathf.mod f32.const -0.5 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32907,10 +38112,8 @@ end f32.const 2 f32.const -1 - call $~lib/math/NativeMathf.mod - f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32922,10 +38125,8 @@ end f32.const -2 f32.const -1 - call $~lib/math/NativeMathf.mod f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32937,10 +38138,8 @@ end f32.const inf f32.const -1 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32952,10 +38151,8 @@ end f32.const -inf f32.const -1 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32967,10 +38164,8 @@ end f32.const nan:0x400000 f32.const -1 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32982,10 +38177,8 @@ end f32.const 0 f32.const 0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -32997,10 +38190,8 @@ end f32.const 0 f32.const -0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33012,10 +38203,8 @@ end f32.const 0 f32.const inf - call $~lib/math/NativeMathf.mod f32.const 0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33027,10 +38216,8 @@ end f32.const 0 f32.const -inf - call $~lib/math/NativeMathf.mod - f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33042,10 +38229,8 @@ end f32.const 0 f32.const nan:0x400000 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33057,10 +38242,8 @@ end f32.const -0 f32.const 0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33072,10 +38255,8 @@ end f32.const -0 f32.const -0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33087,10 +38268,8 @@ end f32.const -0 f32.const inf - call $~lib/math/NativeMathf.mod f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33102,10 +38281,8 @@ end f32.const -0 f32.const -inf - call $~lib/math/NativeMathf.mod f32.const -0 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33117,10 +38294,8 @@ end f32.const -0 f32.const nan:0x400000 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33132,10 +38307,8 @@ end f32.const 1 f32.const 0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33147,10 +38320,8 @@ end f32.const -1 f32.const 0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33162,10 +38333,8 @@ end f32.const inf f32.const 0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33177,10 +38346,8 @@ end f32.const -inf f32.const 0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33192,10 +38359,8 @@ end f32.const nan:0x400000 f32.const 0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33207,10 +38372,8 @@ end f32.const -1 f32.const -0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33222,10 +38385,8 @@ end f32.const inf f32.const -0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33237,10 +38398,8 @@ end f32.const -inf f32.const -0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33252,10 +38411,8 @@ end f32.const nan:0x400000 f32.const -0 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33267,10 +38424,8 @@ end f32.const inf f32.const 2 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33282,10 +38437,8 @@ end f32.const inf f32.const -0.5 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33297,10 +38450,8 @@ end f32.const inf f32.const nan:0x400000 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33312,10 +38463,8 @@ end f32.const -inf f32.const 2 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33327,10 +38476,8 @@ end f32.const -inf f32.const -0.5 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33342,10 +38489,8 @@ end f32.const -inf f32.const nan:0x400000 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33357,10 +38502,8 @@ end f32.const nan:0x400000 f32.const nan:0x400000 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33372,10 +38515,8 @@ end f32.const 1 f32.const nan:0x400000 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33387,10 +38528,8 @@ end f32.const -1 f32.const nan:0x400000 - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33402,10 +38541,8 @@ end f32.const 1 f32.const inf - call $~lib/math/NativeMathf.mod f32.const 1 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33417,10 +38554,8 @@ end f32.const -1 f32.const inf - call $~lib/math/NativeMathf.mod f32.const -1 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33432,10 +38567,8 @@ end f32.const inf f32.const inf - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33447,10 +38580,8 @@ end f32.const -inf f32.const inf - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33462,10 +38593,8 @@ end f32.const 1 f32.const -inf - call $~lib/math/NativeMathf.mod f32.const 1 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33477,10 +38606,8 @@ end f32.const -1 f32.const -inf - call $~lib/math/NativeMathf.mod f32.const -1 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33492,10 +38619,8 @@ end f32.const inf f32.const -inf - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33507,10 +38632,8 @@ end f32.const -inf f32.const -inf - call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33522,10 +38645,8 @@ end f32.const 1.75 f32.const 0.5 - call $~lib/math/NativeMathf.mod f32.const 0.25 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33537,10 +38658,8 @@ end f32.const -1.75 f32.const 0.5 - call $~lib/math/NativeMathf.mod f32.const -0.25 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33552,10 +38671,8 @@ end f32.const 1.75 f32.const -0.5 - call $~lib/math/NativeMathf.mod f32.const 0.25 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -33567,10 +38684,8 @@ end f32.const -1.75 f32.const -0.5 - call $~lib/math/NativeMathf.mod f32.const -0.25 - f32.const 0 - call $std/math/check + call $std/math/test_modf i32.eqz if i32.const 0 @@ -39071,9 +44186,10 @@ br $for-loop|1 end end - f64.const -8.06684839057968 f64.const -8 - call $std/math/test_round + f64.const -8 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39083,9 +44199,10 @@ call $~lib/builtins/abort unreachable end - f64.const 4.345239849338305 f64.const 4 - call $std/math/test_round + f64.const 4 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39095,9 +44212,10 @@ call $~lib/builtins/abort unreachable end - f64.const -8.38143342755525 f64.const -8 - call $std/math/test_round + f64.const -8 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39107,9 +44225,10 @@ call $~lib/builtins/abort unreachable end - f64.const -6.531673581913484 f64.const -7 - call $std/math/test_round + f64.const -7 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39119,9 +44238,10 @@ call $~lib/builtins/abort unreachable end - f64.const 9.267056966972586 f64.const 9 - call $std/math/test_round + f64.const 9 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39131,9 +44251,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.6619858980995045 f64.const 1 - call $std/math/test_round + f64.const 1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39143,9 +44264,10 @@ call $~lib/builtins/abort unreachable end - f64.const -0.4066039223853553 f64.const -0 - call $std/math/test_round + f64.const -0 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39155,9 +44277,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5617597462207241 f64.const 1 - call $std/math/test_round + f64.const 1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39167,9 +44290,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.7741522965913037 f64.const 1 - call $std/math/test_round + f64.const 1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39179,9 +44303,10 @@ call $~lib/builtins/abort unreachable end - f64.const -0.6787637026394024 f64.const -1 - call $std/math/test_round + f64.const -1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39193,7 +44318,8 @@ end f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 - call $std/math/test_round + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39205,7 +44331,8 @@ end f64.const inf f64.const inf - call $std/math/test_round + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39217,7 +44344,8 @@ end f64.const -inf f64.const -inf - call $std/math/test_round + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39229,7 +44357,8 @@ end f64.const 0 f64.const 0 - call $std/math/test_round + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39241,7 +44370,8 @@ end f64.const -0 f64.const -0 - call $std/math/test_round + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39253,7 +44383,8 @@ end f64.const 1 f64.const 1 - call $std/math/test_round + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39265,7 +44396,8 @@ end f64.const -1 f64.const -1 - call $std/math/test_round + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39275,9 +44407,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5 f64.const 1 - call $std/math/test_round + f64.const 1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39287,9 +44420,10 @@ call $~lib/builtins/abort unreachable end - f64.const -0.5 f64.const -0 - call $std/math/test_round + f64.const -0 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39299,9 +44433,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1.5 f64.const 2 - call $std/math/test_round + f64.const 2 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39311,9 +44446,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1.5 f64.const -1 - call $std/math/test_round + f64.const -1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39323,9 +44459,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1.0000152587890625 f64.const 1 - call $std/math/test_round + f64.const 1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39335,9 +44472,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1.0000152587890625 f64.const -1 - call $std/math/test_round + f64.const -1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39347,9 +44485,10 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999923706054688 f64.const 1 - call $std/math/test_round + f64.const 1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39359,9 +44498,10 @@ call $~lib/builtins/abort unreachable end - f64.const -0.9999923706054688 f64.const -1 - call $std/math/test_round + f64.const -1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39371,9 +44511,10 @@ call $~lib/builtins/abort unreachable end - f64.const 7.888609052210118e-31 f64.const 0 - call $std/math/test_round + f64.const 0 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39383,9 +44524,10 @@ call $~lib/builtins/abort unreachable end - f64.const -7.888609052210118e-31 f64.const -0 - call $std/math/test_round + f64.const -0 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39395,9 +44537,10 @@ call $~lib/builtins/abort unreachable end - f32.const -8.066848754882812 f32.const -8 - call $std/math/test_roundf + f32.const -8 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39407,9 +44550,10 @@ call $~lib/builtins/abort unreachable end - f32.const 4.345239639282227 f32.const 4 - call $std/math/test_roundf + f32.const 4 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39419,9 +44563,10 @@ call $~lib/builtins/abort unreachable end - f32.const -8.381433486938477 f32.const -8 - call $std/math/test_roundf + f32.const -8 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39431,9 +44576,10 @@ call $~lib/builtins/abort unreachable end - f32.const -6.531673431396484 f32.const -7 - call $std/math/test_roundf + f32.const -7 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39443,9 +44589,10 @@ call $~lib/builtins/abort unreachable end - f32.const 9.267057418823242 f32.const 9 - call $std/math/test_roundf + f32.const 9 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39455,9 +44602,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.6619858741760254 f32.const 1 - call $std/math/test_roundf + f32.const 1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39467,9 +44615,10 @@ call $~lib/builtins/abort unreachable end - f32.const -0.40660393238067627 f32.const -0 - call $std/math/test_roundf + f32.const -0 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39479,9 +44628,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.5617597699165344 f32.const 1 - call $std/math/test_roundf + f32.const 1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39491,9 +44641,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.7741522789001465 f32.const 1 - call $std/math/test_roundf + f32.const 1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39503,9 +44654,10 @@ call $~lib/builtins/abort unreachable end - f32.const -0.6787636876106262 f32.const -1 - call $std/math/test_roundf + f32.const -1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39517,7 +44669,8 @@ end f32.const nan:0x400000 f32.const nan:0x400000 - call $std/math/test_roundf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39529,7 +44682,8 @@ end f32.const inf f32.const inf - call $std/math/test_roundf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39541,7 +44695,8 @@ end f32.const -inf f32.const -inf - call $std/math/test_roundf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39553,7 +44708,8 @@ end f32.const 0 f32.const 0 - call $std/math/test_roundf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39565,7 +44721,8 @@ end f32.const -0 f32.const -0 - call $std/math/test_roundf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39577,7 +44734,8 @@ end f32.const 1 f32.const 1 - call $std/math/test_roundf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39589,7 +44747,8 @@ end f32.const -1 f32.const -1 - call $std/math/test_roundf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39599,9 +44758,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.5 f32.const 1 - call $std/math/test_roundf + f32.const 1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39611,9 +44771,10 @@ call $~lib/builtins/abort unreachable end - f32.const -0.5 f32.const -0 - call $std/math/test_roundf + f32.const -0 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39623,9 +44784,10 @@ call $~lib/builtins/abort unreachable end - f64.const 1.5 f64.const 2 - call $std/math/test_round + f64.const 2 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39635,9 +44797,10 @@ call $~lib/builtins/abort unreachable end - f64.const -1.5 f64.const -1 - call $std/math/test_round + f64.const -1 + f64.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39647,9 +44810,10 @@ call $~lib/builtins/abort unreachable end - f32.const 1.0000152587890625 f32.const 1 - call $std/math/test_roundf + f32.const 1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39659,9 +44823,10 @@ call $~lib/builtins/abort unreachable end - f32.const -1.0000152587890625 f32.const -1 - call $std/math/test_roundf + f32.const -1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39671,9 +44836,10 @@ call $~lib/builtins/abort unreachable end - f32.const 0.9999923706054688 f32.const 1 - call $std/math/test_roundf + f32.const 1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39683,9 +44849,10 @@ call $~lib/builtins/abort unreachable end - f32.const -0.9999923706054688 f32.const -1 - call $std/math/test_roundf + f32.const -1 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39695,9 +44862,10 @@ call $~lib/builtins/abort unreachable end - f32.const 7.888609052210118e-31 f32.const 0 - call $std/math/test_roundf + f32.const 0 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -39707,9 +44875,10 @@ call $~lib/builtins/abort unreachable end - f32.const -7.888609052210118e-31 f32.const -0 - call $std/math/test_roundf + f32.const -0 + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -42246,9 +47415,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.sin f64.const -0.9774292928781227 f64.const -0.14564912021160126 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/sin + f64.const -0.9774292928781227 + f64.const -0.14564912021160126 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42259,9 +47438,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.sin f64.const -0.9333544736965718 f64.const -0.08813747018575668 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/sin + f64.const -0.9333544736965718 + f64.const -0.08813747018575668 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42272,9 +47461,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.sin f64.const -0.8640924711706304 f64.const -0.11743883043527603 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/sin + f64.const -0.8640924711706304 + f64.const -0.11743883043527603 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42285,9 +47484,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.sin f64.const -0.24593894772615374 f64.const -0.12697851657867432 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/sin + f64.const -0.24593894772615374 + f64.const -0.12697851657867432 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42298,9 +47507,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.sin f64.const 0.15706789772028007 f64.const -0.029550159350037575 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/sin + f64.const 0.15706789772028007 + f64.const -0.029550159350037575 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42311,9 +47530,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.sin f64.const 0.6146844860113447 f64.const -0.09976737946271896 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/sin + f64.const 0.6146844860113447 + f64.const -0.09976737946271896 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42324,9 +47553,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.sin f64.const -0.39549242182823696 f64.const -0.3668774962425232 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/sin + f64.const -0.39549242182823696 + f64.const -0.3668774962425232 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42337,9 +47576,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.sin f64.const 0.5326763286672376 f64.const -0.3550407588481903 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/sin + f64.const 0.5326763286672376 + f64.const -0.3550407588481903 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42350,9 +47599,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.sin f64.const 0.6991102068649779 f64.const -0.427672415971756 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/sin + f64.const 0.6991102068649779 + f64.const -0.427672415971756 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42363,9 +47622,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.sin f64.const -0.6278312326301215 f64.const -0.3828115463256836 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/sin + f64.const -0.6278312326301215 + f64.const -0.3828115463256836 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42376,9 +47645,19 @@ unreachable end f64.const 9.313225746154785e-10 + call $~lib/math/NativeMath.sin f64.const 9.313225746154785e-10 f64.const 6.510416860692203e-04 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 9.313225746154785e-10 + call $~lib/bindings/Math/sin + f64.const 9.313225746154785e-10 + f64.const 6.510416860692203e-04 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42389,9 +47668,19 @@ unreachable end f64.const -9.313225746154785e-10 + call $~lib/math/NativeMath.sin f64.const -9.313225746154785e-10 f64.const -6.510416860692203e-04 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -9.313225746154785e-10 + call $~lib/bindings/Math/sin + f64.const -9.313225746154785e-10 + f64.const -6.510416860692203e-04 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42402,9 +47691,19 @@ unreachable end f64.const 2.2250738585072014e-308 + call $~lib/math/NativeMath.sin f64.const 2.2250738585072014e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 2.2250738585072014e-308 + call $~lib/bindings/Math/sin + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42415,9 +47714,19 @@ unreachable end f64.const -2.2250738585072014e-308 + call $~lib/math/NativeMath.sin f64.const -2.2250738585072014e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -2.2250738585072014e-308 + call $~lib/bindings/Math/sin + f64.const -2.2250738585072014e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42428,9 +47737,19 @@ unreachable end f64.const 5e-324 + call $~lib/math/NativeMath.sin f64.const 5e-324 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/Math/sin + f64.const 5e-324 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42441,9 +47760,19 @@ unreachable end f64.const -5e-324 + call $~lib/math/NativeMath.sin f64.const -5e-324 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/Math/sin + f64.const -5e-324 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42454,9 +47783,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.sin f64.const 0 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/sin + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42467,9 +47806,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.sin f64.const -0 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/sin + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42480,9 +47829,19 @@ unreachable end f64.const 2.225073858507202e-308 + call $~lib/math/NativeMath.sin f64.const 2.225073858507202e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 2.225073858507202e-308 + call $~lib/bindings/Math/sin + f64.const 2.225073858507202e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42493,9 +47852,19 @@ unreachable end f64.const 2.2250738585072024e-308 + call $~lib/math/NativeMath.sin f64.const 2.2250738585072024e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 2.2250738585072024e-308 + call $~lib/bindings/Math/sin + f64.const 2.2250738585072024e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42506,9 +47875,19 @@ unreachable end f64.const 4.4501477170144003e-308 + call $~lib/math/NativeMath.sin f64.const 4.4501477170144003e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 4.4501477170144003e-308 + call $~lib/bindings/Math/sin + f64.const 4.4501477170144003e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42519,9 +47898,19 @@ unreachable end f64.const 4.450147717014403e-308 + call $~lib/math/NativeMath.sin f64.const 4.450147717014403e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 4.450147717014403e-308 + call $~lib/bindings/Math/sin + f64.const 4.450147717014403e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42532,9 +47921,19 @@ unreachable end f64.const 4.450147717014406e-308 + call $~lib/math/NativeMath.sin f64.const 4.450147717014406e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 4.450147717014406e-308 + call $~lib/bindings/Math/sin + f64.const 4.450147717014406e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42545,9 +47944,19 @@ unreachable end f64.const 8.900295434028806e-308 + call $~lib/math/NativeMath.sin f64.const 8.900295434028806e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 8.900295434028806e-308 + call $~lib/bindings/Math/sin + f64.const 8.900295434028806e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42558,9 +47967,19 @@ unreachable end f64.const 1.1175870895385742e-08 + call $~lib/math/NativeMath.sin f64.const 1.1175870895385742e-08 f64.const 0.140625 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 1.1175870895385742e-08 + call $~lib/bindings/Math/sin + f64.const 1.1175870895385742e-08 + f64.const 0.140625 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42571,9 +47990,19 @@ unreachable end f64.const 1.4901161193847656e-08 + call $~lib/math/NativeMath.sin f64.const 1.4901161193847656e-08 f64.const 0.1666666716337204 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 1.4901161193847656e-08 + call $~lib/bindings/Math/sin + f64.const 1.4901161193847656e-08 + f64.const 0.1666666716337204 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42584,9 +48013,19 @@ unreachable end f64.const -2.225073858507202e-308 + call $~lib/math/NativeMath.sin f64.const -2.225073858507202e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -2.225073858507202e-308 + call $~lib/bindings/Math/sin + f64.const -2.225073858507202e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42597,9 +48036,19 @@ unreachable end f64.const -2.2250738585072024e-308 + call $~lib/math/NativeMath.sin f64.const -2.2250738585072024e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -2.2250738585072024e-308 + call $~lib/bindings/Math/sin + f64.const -2.2250738585072024e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42610,9 +48059,19 @@ unreachable end f64.const -4.4501477170144003e-308 + call $~lib/math/NativeMath.sin f64.const -4.4501477170144003e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -4.4501477170144003e-308 + call $~lib/bindings/Math/sin + f64.const -4.4501477170144003e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42623,9 +48082,19 @@ unreachable end f64.const -4.450147717014403e-308 + call $~lib/math/NativeMath.sin f64.const -4.450147717014403e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -4.450147717014403e-308 + call $~lib/bindings/Math/sin + f64.const -4.450147717014403e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42636,9 +48105,19 @@ unreachable end f64.const -4.450147717014406e-308 + call $~lib/math/NativeMath.sin f64.const -4.450147717014406e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -4.450147717014406e-308 + call $~lib/bindings/Math/sin + f64.const -4.450147717014406e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42649,9 +48128,19 @@ unreachable end f64.const -8.900295434028806e-308 + call $~lib/math/NativeMath.sin f64.const -8.900295434028806e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -8.900295434028806e-308 + call $~lib/bindings/Math/sin + f64.const -8.900295434028806e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42662,9 +48151,19 @@ unreachable end f64.const -1.1175870895385742e-08 + call $~lib/math/NativeMath.sin f64.const -1.1175870895385742e-08 f64.const -0.140625 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -1.1175870895385742e-08 + call $~lib/bindings/Math/sin + f64.const -1.1175870895385742e-08 + f64.const -0.140625 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42675,9 +48174,19 @@ unreachable end f64.const -1.4901161193847656e-08 + call $~lib/math/NativeMath.sin f64.const -1.4901161193847656e-08 f64.const -0.1666666716337204 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -1.4901161193847656e-08 + call $~lib/bindings/Math/sin + f64.const -1.4901161193847656e-08 + f64.const -0.1666666716337204 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42688,9 +48197,19 @@ unreachable end f64.const -1.4901161193847656e-08 + call $~lib/math/NativeMath.sin f64.const -1.4901161193847656e-08 f64.const -0.1666666716337204 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -1.4901161193847656e-08 + call $~lib/bindings/Math/sin + f64.const -1.4901161193847656e-08 + f64.const -0.1666666716337204 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42701,9 +48220,19 @@ unreachable end f64.const 1e-323 + call $~lib/math/NativeMath.sin f64.const 1e-323 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 1e-323 + call $~lib/bindings/Math/sin + f64.const 1e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42714,9 +48243,19 @@ unreachable end f64.const 4.4e-323 + call $~lib/math/NativeMath.sin f64.const 4.4e-323 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 4.4e-323 + call $~lib/bindings/Math/sin + f64.const 4.4e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42727,9 +48266,19 @@ unreachable end f64.const 5.562684646268003e-309 + call $~lib/math/NativeMath.sin f64.const 5.562684646268003e-309 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 5.562684646268003e-309 + call $~lib/bindings/Math/sin + f64.const 5.562684646268003e-309 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42740,9 +48289,19 @@ unreachable end f64.const 1.1125369292536007e-308 + call $~lib/math/NativeMath.sin f64.const 1.1125369292536007e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 1.1125369292536007e-308 + call $~lib/bindings/Math/sin + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42753,9 +48312,19 @@ unreachable end f64.const 2.2250738585072004e-308 + call $~lib/math/NativeMath.sin f64.const 2.2250738585072004e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 2.2250738585072004e-308 + call $~lib/bindings/Math/sin + f64.const 2.2250738585072004e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42766,9 +48335,19 @@ unreachable end f64.const 2.225073858507201e-308 + call $~lib/math/NativeMath.sin f64.const 2.225073858507201e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 2.225073858507201e-308 + call $~lib/bindings/Math/sin + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42779,9 +48358,19 @@ unreachable end f64.const -1e-323 + call $~lib/math/NativeMath.sin f64.const -1e-323 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -1e-323 + call $~lib/bindings/Math/sin + f64.const -1e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42792,9 +48381,19 @@ unreachable end f64.const -4.4e-323 + call $~lib/math/NativeMath.sin f64.const -4.4e-323 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -4.4e-323 + call $~lib/bindings/Math/sin + f64.const -4.4e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42805,9 +48404,19 @@ unreachable end f64.const -5.562684646268003e-309 + call $~lib/math/NativeMath.sin f64.const -5.562684646268003e-309 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -5.562684646268003e-309 + call $~lib/bindings/Math/sin + f64.const -5.562684646268003e-309 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42818,9 +48427,19 @@ unreachable end f64.const -1.1125369292536007e-308 + call $~lib/math/NativeMath.sin f64.const -1.1125369292536007e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -1.1125369292536007e-308 + call $~lib/bindings/Math/sin + f64.const -1.1125369292536007e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42831,9 +48450,19 @@ unreachable end f64.const -2.2250738585072004e-308 + call $~lib/math/NativeMath.sin f64.const -2.2250738585072004e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -2.2250738585072004e-308 + call $~lib/bindings/Math/sin + f64.const -2.2250738585072004e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42844,9 +48473,19 @@ unreachable end f64.const -2.225073858507201e-308 + call $~lib/math/NativeMath.sin f64.const -2.225073858507201e-308 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -2.225073858507201e-308 + call $~lib/bindings/Math/sin + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42857,9 +48496,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.sin f64.const 0 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/sin + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42870,9 +48519,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.sin f64.const -0 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/sin + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42883,9 +48542,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.sin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42896,9 +48565,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.sin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -42909,9 +48588,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.sin f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sin + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44479,10 +50168,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.06684839057968 + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44492,10 +50190,19 @@ call $~lib/builtins/abort unreachable end - f64.const 4.345239849338305 + f64.const 2.0845238903256313 f64.const 2.0845238903256313 f64.const -0.07180261611938477 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/sqrt + f64.const 2.0845238903256313 + f64.const -0.07180261611938477 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44505,10 +50212,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.38143342755525 + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44518,10 +50234,19 @@ call $~lib/builtins/abort unreachable end - f64.const -6.531673581913484 + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44531,10 +50256,19 @@ call $~lib/builtins/abort unreachable end - f64.const 9.267056966972586 + f64.const 3.0441841217266385 f64.const 3.0441841217266385 f64.const -0.01546262577176094 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/sqrt + f64.const 3.0441841217266385 + f64.const -0.01546262577176094 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44544,10 +50278,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.6619858980995045 + f64.const 0.8136251582267503 f64.const 0.8136251582267503 f64.const -0.08618157356977463 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/sqrt + f64.const 0.8136251582267503 + f64.const -0.08618157356977463 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44557,10 +50300,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.4066039223853553 + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44570,10 +50322,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5617597462207241 + f64.const 0.7495063350104014 f64.const 0.7495063350104014 f64.const -0.0981396734714508 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/sqrt + f64.const 0.7495063350104014 + f64.const -0.0981396734714508 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44583,10 +50344,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.7741522965913037 + f64.const 0.879859248170583 f64.const 0.879859248170583 f64.const -0.37124353647232056 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/sqrt + f64.const 0.879859248170583 + f64.const -0.37124353647232056 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44596,10 +50366,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.6787637026394024 + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44612,7 +50391,16 @@ f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44625,7 +50413,16 @@ f64.const inf f64.const inf f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/sqrt + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44635,10 +50432,19 @@ call $~lib/builtins/abort unreachable end - f64.const -inf + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44651,7 +50457,16 @@ f64.const 0 f64.const 0 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/sqrt + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44664,7 +50479,16 @@ f64.const -0 f64.const -0 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/sqrt + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44677,7 +50501,16 @@ f64.const 1 f64.const 1 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/sqrt + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44687,10 +50520,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1 + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44700,10 +50542,19 @@ call $~lib/builtins/abort unreachable end - f64.const 4 + f64.const 2 f64.const 2 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 4 + call $~lib/bindings/Math/sqrt + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44713,10 +50564,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1e-323 + f64.const 3.1434555694052576e-162 f64.const 3.1434555694052576e-162 f64.const 0.43537619709968567 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1e-323 + call $~lib/bindings/Math/sqrt + f64.const 3.1434555694052576e-162 + f64.const 0.43537619709968567 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44726,10 +50586,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.5e-323 + f64.const 3.849931087076416e-162 f64.const 3.849931087076416e-162 f64.const -0.45194002985954285 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1.5e-323 + call $~lib/bindings/Math/sqrt + f64.const 3.849931087076416e-162 + f64.const -0.45194002985954285 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44739,10 +50608,19 @@ call $~lib/builtins/abort unreachable end - f64.const 5e-324 + f64.const 2.2227587494850775e-162 f64.const 2.2227587494850775e-162 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/Math/sqrt + f64.const 2.2227587494850775e-162 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44752,10 +50630,19 @@ call $~lib/builtins/abort unreachable end - f64.const -5e-324 + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44768,7 +50655,16 @@ f64.const 0.9999999999999999 f64.const 0.9999999999999999 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 0.9999999999999999 + call $~lib/bindings/Math/sqrt + f64.const 0.9999999999999999 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44778,10 +50674,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.9999999999999998 + f64.const 1.414213562373095 f64.const 1.414213562373095 f64.const -0.21107041835784912 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1.9999999999999998 + call $~lib/bindings/Math/sqrt + f64.const 1.414213562373095 + f64.const -0.21107041835784912 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44791,10 +50696,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.0000000000000002 + f64.const 1 f64.const 1 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1.0000000000000002 + call $~lib/bindings/Math/sqrt + f64.const 1 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44804,10 +50718,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.0000000000000004 + f64.const 1.4142135623730951 f64.const 1.4142135623730951 f64.const -0.27173060178756714 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.0000000000000004 + call $~lib/bindings/Math/sqrt + f64.const 1.4142135623730951 + f64.const -0.27173060178756714 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44817,10 +50740,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.0000000000000002 + f64.const 1 f64.const 1 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1.0000000000000002 + call $~lib/bindings/Math/sqrt + f64.const 1 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44833,7 +50765,16 @@ f64.const 0.9999999999999999 f64.const 0.9999999999999999 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 0.9999999999999999 + call $~lib/bindings/Math/sqrt + f64.const 0.9999999999999999 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44843,10 +50784,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1797693134862315708145274e284 + f64.const -nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const -1797693134862315708145274e284 + call $~lib/bindings/Math/sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44856,10 +50806,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862315708145274e284 + f64.const 1340780792994259561100831e130 f64.const 1340780792994259561100831e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862315708145274e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994259561100831e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44869,10 +50828,19 @@ call $~lib/builtins/abort unreachable end - f64.const 179769313486231490980915e285 + f64.const 134078079299425926338769e131 f64.const 134078079299425926338769e131 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 179769313486231490980915e285 + call $~lib/bindings/Math/sqrt + f64.const 134078079299425926338769e131 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44882,10 +50850,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862314111473026e284 + f64.const 1340780792994258965674548e130 f64.const 1340780792994258965674548e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862314111473026e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994258965674548e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44895,10 +50872,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862313313136902e284 + f64.const 1340780792994258667961407e130 f64.const 1340780792994258667961407e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862313313136902e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994258667961407e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44908,10 +50894,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862312514800778e284 + f64.const 1340780792994258370248265e130 f64.const 1340780792994258370248265e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862312514800778e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994258370248265e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44921,10 +50916,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862311716464655e284 + f64.const 1340780792994258072535124e130 f64.const 1340780792994258072535124e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862311716464655e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994258072535124e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44934,10 +50938,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862310918128531e284 + f64.const 1340780792994257774821982e130 f64.const 1340780792994257774821982e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862310918128531e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994257774821982e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44947,10 +50960,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862310119792407e284 + f64.const 1340780792994257477108841e130 f64.const 1340780792994257477108841e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862310119792407e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994257477108841e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44960,10 +50982,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862309321456283e284 + f64.const 1340780792994257179395699e130 f64.const 1340780792994257179395699e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862309321456283e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994257179395699e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44973,10 +51004,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862308523120159e284 + f64.const 1340780792994256881682558e130 f64.const 1340780792994256881682558e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862308523120159e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994256881682558e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44986,10 +51026,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1797693134862307724784036e284 + f64.const 1340780792994256583969417e130 f64.const 1340780792994256583969417e130 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1797693134862307724784036e284 + call $~lib/bindings/Math/sqrt + f64.const 1340780792994256583969417e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -44999,10 +51048,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.225073858507203e-308 + f64.const 1.4916681462400417e-154 f64.const 1.4916681462400417e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.225073858507203e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400417e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45012,10 +51070,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.225073858507205e-308 + f64.const 1.4916681462400423e-154 f64.const 1.4916681462400423e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.225073858507205e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400423e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45025,10 +51092,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.225073858507207e-308 + f64.const 1.491668146240043e-154 f64.const 1.491668146240043e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.225073858507207e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.491668146240043e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45038,10 +51114,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.225073858507209e-308 + f64.const 1.4916681462400437e-154 f64.const 1.4916681462400437e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.225073858507209e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400437e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45051,10 +51136,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.225073858507211e-308 + f64.const 1.4916681462400443e-154 f64.const 1.4916681462400443e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.225073858507211e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400443e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45064,10 +51158,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072127e-308 + f64.const 1.491668146240045e-154 f64.const 1.491668146240045e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072127e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.491668146240045e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45077,10 +51180,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072147e-308 + f64.const 1.4916681462400457e-154 f64.const 1.4916681462400457e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072147e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400457e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45090,10 +51202,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072167e-308 + f64.const 1.4916681462400463e-154 f64.const 1.4916681462400463e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072167e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400463e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45103,10 +51224,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072187e-308 + f64.const 1.491668146240047e-154 f64.const 1.491668146240047e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072187e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.491668146240047e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45116,10 +51246,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072207e-308 + f64.const 1.4916681462400476e-154 f64.const 1.4916681462400476e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072207e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400476e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45129,10 +51268,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072226e-308 + f64.const 1.4916681462400483e-154 f64.const 1.4916681462400483e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072226e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400483e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45142,10 +51290,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072246e-308 + f64.const 1.491668146240049e-154 f64.const 1.491668146240049e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072246e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.491668146240049e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45155,10 +51312,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072266e-308 + f64.const 1.4916681462400496e-154 f64.const 1.4916681462400496e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072266e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400496e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45168,10 +51334,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072286e-308 + f64.const 1.4916681462400503e-154 f64.const 1.4916681462400503e-154 f64.const -0.5 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.2250738585072286e-308 + call $~lib/bindings/Math/sqrt + f64.const 1.4916681462400503e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45181,10 +51356,19 @@ call $~lib/builtins/abort unreachable end - f64.const 92.35130391890645 + f64.const 9.609958580499006 f64.const 9.609958580499006 f64.const 0.4998137056827545 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 92.35130391890645 + call $~lib/bindings/Math/sqrt + f64.const 9.609958580499006 + f64.const 0.4998137056827545 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45194,10 +51378,19 @@ call $~lib/builtins/abort unreachable end - f64.const 93.3599596388916 + f64.const 9.662295774757238 f64.const 9.662295774757238 f64.const -0.49979978799819946 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 93.3599596388916 + call $~lib/bindings/Math/sqrt + f64.const 9.662295774757238 + f64.const -0.49979978799819946 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45207,10 +51400,19 @@ call $~lib/builtins/abort unreachable end - f64.const 95.42049628886124 + f64.const 9.76834153215689 f64.const 9.76834153215689 f64.const -0.49997270107269287 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 95.42049628886124 + call $~lib/bindings/Math/sqrt + f64.const 9.76834153215689 + f64.const -0.49997270107269287 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45220,10 +51422,19 @@ call $~lib/builtins/abort unreachable end - f64.const 95.87916941885449 + f64.const 9.791790919890728 f64.const 9.791790919890728 f64.const 0.4998766779899597 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 95.87916941885449 + call $~lib/bindings/Math/sqrt + f64.const 9.791790919890728 + f64.const 0.4998766779899597 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45233,10 +51444,19 @@ call $~lib/builtins/abort unreachable end - f64.const 96.84804174884022 + f64.const 9.841140266698785 f64.const 9.841140266698785 f64.const 0.499801903963089 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 96.84804174884022 + call $~lib/bindings/Math/sqrt + f64.const 9.841140266698785 + f64.const 0.499801903963089 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45246,10 +51466,19 @@ call $~lib/builtins/abort unreachable end - f64.const 97.43639050883155 + f64.const 9.87098731175517 f64.const 9.87098731175517 f64.const 0.4997696280479431 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 97.43639050883155 + call $~lib/bindings/Math/sqrt + f64.const 9.87098731175517 + f64.const 0.4997696280479431 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45259,10 +51488,19 @@ call $~lib/builtins/abort unreachable end - f64.const 97.50957979883047 + f64.const 9.874693909120955 f64.const 9.874693909120955 f64.const 0.49999818205833435 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 97.50957979883047 + call $~lib/bindings/Math/sqrt + f64.const 9.874693909120955 + f64.const 0.49999818205833435 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45272,10 +51510,19 @@ call $~lib/builtins/abort unreachable end - f64.const 97.80496893882612 + f64.const 9.88963947466368 f64.const 9.88963947466368 f64.const -0.4999580681324005 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 97.80496893882612 + call $~lib/bindings/Math/sqrt + f64.const 9.88963947466368 + f64.const -0.4999580681324005 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45285,10 +51532,19 @@ call $~lib/builtins/abort unreachable end - f64.const 98.2751822888192 + f64.const 9.913383997849534 f64.const 9.913383997849534 f64.const 0.49979931116104126 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 98.2751822888192 + call $~lib/bindings/Math/sqrt + f64.const 9.913383997849534 + f64.const 0.49979931116104126 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45298,10 +51554,19 @@ call $~lib/builtins/abort unreachable end - f64.const 99.47293564880155 + f64.const 9.973611966023219 f64.const 9.973611966023219 f64.const -0.4999540448188782 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 99.47293564880155 + call $~lib/bindings/Math/sqrt + f64.const 9.973611966023219 + f64.const -0.4999540448188782 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45311,10 +51576,19 @@ call $~lib/builtins/abort unreachable end - f64.const 100.57047130878539 + f64.const 10.028483001370914 f64.const 10.028483001370914 f64.const -0.49996453523635864 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 100.57047130878539 + call $~lib/bindings/Math/sqrt + f64.const 10.028483001370914 + f64.const -0.49996453523635864 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45324,10 +51598,19 @@ call $~lib/builtins/abort unreachable end - f64.const 100.60954608878481 + f64.const 10.030431002144665 f64.const 10.030431002144665 f64.const 0.49975672364234924 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 100.60954608878481 + call $~lib/bindings/Math/sqrt + f64.const 10.030431002144665 + f64.const 0.49975672364234924 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45337,10 +51620,19 @@ call $~lib/builtins/abort unreachable end - f64.const 100.67909109878379 + f64.const 10.033897104255344 f64.const 10.033897104255344 f64.const -0.4997771382331848 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 100.67909109878379 + call $~lib/bindings/Math/sqrt + f64.const 10.033897104255344 + f64.const -0.4997771382331848 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45350,10 +51642,19 @@ call $~lib/builtins/abort unreachable end - f64.const 101.12268095877725 + f64.const 10.055977374615422 f64.const 10.055977374615422 f64.const 0.49988678097724915 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 101.12268095877725 + call $~lib/bindings/Math/sqrt + f64.const 10.055977374615422 + f64.const 0.49988678097724915 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45363,10 +51664,19 @@ call $~lib/builtins/abort unreachable end - f64.const 101.3027691287746 + f64.const 10.064927676281366 f64.const 10.064927676281366 f64.const 0.4999105632305145 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 101.3027691287746 + call $~lib/bindings/Math/sqrt + f64.const 10.064927676281366 + f64.const 0.4999105632305145 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45376,10 +51686,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.45932313565507e-307 + f64.const 4.9591563149945874e-154 f64.const 4.9591563149945874e-154 f64.const -0.4998999834060669 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.45932313565507e-307 + call $~lib/bindings/Math/sqrt + f64.const 4.9591563149945874e-154 + f64.const -0.4998999834060669 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45389,10 +51708,19 @@ call $~lib/builtins/abort unreachable end - f64.const 5.610957305180409e-307 + f64.const 7.490632353266584e-154 f64.const 7.490632353266584e-154 f64.const -0.4999343752861023 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 5.610957305180409e-307 + call $~lib/bindings/Math/sqrt + f64.const 7.490632353266584e-154 + f64.const -0.4999343752861023 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45402,10 +51730,19 @@ call $~lib/builtins/abort unreachable end - f64.const 5.8073887977408524e-307 + f64.const 7.62062254526548e-154 f64.const 7.62062254526548e-154 f64.const -0.49989569187164307 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 5.8073887977408524e-307 + call $~lib/bindings/Math/sqrt + f64.const 7.62062254526548e-154 + f64.const -0.49989569187164307 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45415,10 +51752,19 @@ call $~lib/builtins/abort unreachable end - f64.const 7.026137080471427e-307 + f64.const 8.382205605013174e-154 f64.const 8.382205605013174e-154 f64.const 0.49980640411376953 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 7.026137080471427e-307 + call $~lib/bindings/Math/sqrt + f64.const 8.382205605013174e-154 + f64.const 0.49980640411376953 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45428,10 +51774,19 @@ call $~lib/builtins/abort unreachable end - f64.const 8.438697769194972e-307 + f64.const 9.186238495268328e-154 f64.const 9.186238495268328e-154 f64.const -0.4999065697193146 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 8.438697769194972e-307 + call $~lib/bindings/Math/sqrt + f64.const 9.186238495268328e-154 + f64.const -0.4999065697193146 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45441,10 +51796,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.1607792515836795e-306 + f64.const 1.0773946591586944e-153 f64.const 1.0773946591586944e-153 f64.const -0.49997684359550476 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1.1607792515836795e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.0773946591586944e-153 + f64.const -0.49997684359550476 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45454,10 +51818,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.2827413827423193e-306 + f64.const 1.1325817333606962e-153 f64.const 1.1325817333606962e-153 f64.const -0.4999513030052185 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1.2827413827423193e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.1325817333606962e-153 + f64.const -0.4999513030052185 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45467,10 +51840,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.7116604596087457e-306 + f64.const 1.3083044216117078e-153 f64.const 1.3083044216117078e-153 f64.const -0.49986395239830017 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 1.7116604596087457e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.3083044216117078e-153 + f64.const -0.49986395239830017 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45480,10 +51862,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.038173251686994e-306 + f64.const 1.4276460526639628e-153 f64.const 1.4276460526639628e-153 f64.const 0.4998403787612915 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.038173251686994e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.4276460526639628e-153 + f64.const 0.4998403787612915 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45493,10 +51884,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.171572060856931e-306 + f64.const 1.4736254818836879e-153 f64.const 1.4736254818836879e-153 f64.const 0.4999290406703949 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.171572060856931e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.4736254818836879e-153 + f64.const 0.4999290406703949 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45506,10 +51906,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.4681399631804094e-306 + f64.const 1.5710314965589996e-153 f64.const 1.5710314965589996e-153 f64.const 0.49989044666290283 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.4681399631804094e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.5710314965589996e-153 + f64.const 0.49989044666290283 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45519,10 +51928,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.5175533964200588e-306 + f64.const 1.5866799918131124e-153 f64.const 1.5866799918131124e-153 f64.const -0.4997701048851013 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.5175533964200588e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.5866799918131124e-153 + f64.const -0.4997701048851013 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45532,10 +51950,19 @@ call $~lib/builtins/abort unreachable end - f64.const 2.6461505468829625e-306 + f64.const 1.6266992797941982e-153 f64.const 1.6266992797941982e-153 f64.const 0.4998672902584076 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 2.6461505468829625e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.6266992797941982e-153 + f64.const 0.4998672902584076 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45545,10 +51972,19 @@ call $~lib/builtins/abort unreachable end - f64.const 3.8167076367720413e-306 + f64.const 1.9536395872248397e-153 f64.const 1.9536395872248397e-153 f64.const 0.49983471632003784 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 3.8167076367720413e-306 + call $~lib/bindings/Math/sqrt + f64.const 1.9536395872248397e-153 + f64.const 0.49983471632003784 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45558,10 +51994,19 @@ call $~lib/builtins/abort unreachable end - f64.const 4.5743220778562766e-306 + f64.const 2.1387664851161936e-153 f64.const 2.1387664851161936e-153 f64.const 0.49985939264297485 - call $std/math/test_sqrt + call $std/math/check + if (result i32) + f64.const 4.5743220778562766e-306 + call $~lib/bindings/Math/sqrt + f64.const 2.1387664851161936e-153 + f64.const 0.49985939264297485 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -45988,9 +52433,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.tan f64.const 4.626603542401633 f64.const -0.2727603316307068 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/tan + f64.const 4.626603542401633 + f64.const -0.2727603316307068 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46001,9 +52456,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.tan f64.const 2.600191705822202 f64.const 0.2651003301143646 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/tan + f64.const 2.600191705822202 + f64.const 0.2651003301143646 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46014,9 +52479,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.tan f64.const 1.7167408328741052 f64.const -0.24687519669532776 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/tan + f64.const 1.7167408328741052 + f64.const -0.24687519669532776 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46027,9 +52502,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.tan f64.const -0.2537322523453725 f64.const -0.4679703712463379 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/tan + f64.const -0.2537322523453725 + f64.const -0.4679703712463379 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46040,9 +52525,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.tan f64.const -0.15904195727191958 f64.const -0.06704077869653702 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/tan + f64.const -0.15904195727191958 + f64.const -0.06704077869653702 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46053,9 +52548,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.tan f64.const 0.7792919106910434 f64.const -0.038056135177612305 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/tan + f64.const 0.7792919106910434 + f64.const -0.038056135177612305 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46066,9 +52571,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.tan f64.const -0.43059952879543656 f64.const -0.09242714196443558 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/tan + f64.const -0.43059952879543656 + f64.const -0.09242714196443558 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46079,9 +52594,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.tan f64.const 0.62940368731874 f64.const -0.321913480758667 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/tan + f64.const 0.62940368731874 + f64.const -0.321913480758667 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46092,9 +52617,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.tan f64.const 0.9777574652949645 f64.const -0.1966651827096939 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/tan + f64.const 0.9777574652949645 + f64.const -0.1966651827096939 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46105,9 +52640,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.tan f64.const -0.8066186630209123 f64.const -0.067665696144104 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/tan + f64.const -0.8066186630209123 + f64.const -0.067665696144104 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46118,9 +52663,19 @@ unreachable end f64.const 9.313225746154785e-10 + call $~lib/math/NativeMath.tan f64.const 9.313225746154785e-10 f64.const -1.3020833721384406e-03 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 9.313225746154785e-10 + call $~lib/bindings/Math/tan + f64.const 9.313225746154785e-10 + f64.const -1.3020833721384406e-03 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46131,9 +52686,19 @@ unreachable end f64.const -9.313225746154785e-10 + call $~lib/math/NativeMath.tan f64.const -9.313225746154785e-10 f64.const 1.3020833721384406e-03 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -9.313225746154785e-10 + call $~lib/bindings/Math/tan + f64.const -9.313225746154785e-10 + f64.const 1.3020833721384406e-03 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46144,9 +52709,19 @@ unreachable end f64.const 2.2250738585072014e-308 + call $~lib/math/NativeMath.tan f64.const 2.2250738585072014e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 2.2250738585072014e-308 + call $~lib/bindings/Math/tan + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46157,9 +52732,19 @@ unreachable end f64.const -2.2250738585072014e-308 + call $~lib/math/NativeMath.tan f64.const -2.2250738585072014e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -2.2250738585072014e-308 + call $~lib/bindings/Math/tan + f64.const -2.2250738585072014e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46170,9 +52755,19 @@ unreachable end f64.const 5e-324 + call $~lib/math/NativeMath.tan f64.const 5e-324 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/Math/tan + f64.const 5e-324 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46183,9 +52778,19 @@ unreachable end f64.const -5e-324 + call $~lib/math/NativeMath.tan f64.const -5e-324 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/Math/tan + f64.const -5e-324 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46196,9 +52801,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.tan f64.const 0 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/tan + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46209,9 +52824,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.tan f64.const -0 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/tan + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46222,9 +52847,19 @@ unreachable end f64.const 0.7853981633974483 + call $~lib/math/NativeMath.tan f64.const 0.9999999999999999 f64.const -0.4484681189060211 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 0.7853981633974483 + call $~lib/bindings/Math/tan + f64.const 0.9999999999999999 + f64.const -0.4484681189060211 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46235,9 +52870,19 @@ unreachable end f64.const -0.7853981633974483 + call $~lib/math/NativeMath.tan f64.const -0.9999999999999999 f64.const 0.4484681189060211 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -0.7853981633974483 + call $~lib/bindings/Math/tan + f64.const -0.9999999999999999 + f64.const 0.4484681189060211 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46248,9 +52893,19 @@ unreachable end f64.const 2.225073858507202e-308 + call $~lib/math/NativeMath.tan f64.const 2.225073858507202e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 2.225073858507202e-308 + call $~lib/bindings/Math/tan + f64.const 2.225073858507202e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46261,9 +52916,19 @@ unreachable end f64.const 2.2250738585072024e-308 + call $~lib/math/NativeMath.tan f64.const 2.2250738585072024e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 2.2250738585072024e-308 + call $~lib/bindings/Math/tan + f64.const 2.2250738585072024e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46274,9 +52939,19 @@ unreachable end f64.const 4.4501477170144003e-308 + call $~lib/math/NativeMath.tan f64.const 4.4501477170144003e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 4.4501477170144003e-308 + call $~lib/bindings/Math/tan + f64.const 4.4501477170144003e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46287,9 +52962,19 @@ unreachable end f64.const 4.450147717014403e-308 + call $~lib/math/NativeMath.tan f64.const 4.450147717014403e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 4.450147717014403e-308 + call $~lib/bindings/Math/tan + f64.const 4.450147717014403e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46300,9 +52985,19 @@ unreachable end f64.const 4.450147717014406e-308 + call $~lib/math/NativeMath.tan f64.const 4.450147717014406e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 4.450147717014406e-308 + call $~lib/bindings/Math/tan + f64.const 4.450147717014406e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46313,9 +53008,19 @@ unreachable end f64.const 8.900295434028806e-308 + call $~lib/math/NativeMath.tan f64.const 8.900295434028806e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 8.900295434028806e-308 + call $~lib/bindings/Math/tan + f64.const 8.900295434028806e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46326,9 +53031,19 @@ unreachable end f64.const 1.1175870895385742e-08 + call $~lib/math/NativeMath.tan f64.const 1.1175870895385742e-08 f64.const -0.28125 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 1.1175870895385742e-08 + call $~lib/bindings/Math/tan + f64.const 1.1175870895385742e-08 + f64.const -0.28125 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46339,9 +53054,19 @@ unreachable end f64.const 1.4901161193847656e-08 + call $~lib/math/NativeMath.tan f64.const 1.4901161193847656e-08 f64.const -0.3333333432674408 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 1.4901161193847656e-08 + call $~lib/bindings/Math/tan + f64.const 1.4901161193847656e-08 + f64.const -0.3333333432674408 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46352,9 +53077,19 @@ unreachable end f64.const -2.225073858507202e-308 + call $~lib/math/NativeMath.tan f64.const -2.225073858507202e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -2.225073858507202e-308 + call $~lib/bindings/Math/tan + f64.const -2.225073858507202e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46365,9 +53100,19 @@ unreachable end f64.const -2.2250738585072024e-308 + call $~lib/math/NativeMath.tan f64.const -2.2250738585072024e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -2.2250738585072024e-308 + call $~lib/bindings/Math/tan + f64.const -2.2250738585072024e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46378,9 +53123,19 @@ unreachable end f64.const -4.4501477170144003e-308 + call $~lib/math/NativeMath.tan f64.const -4.4501477170144003e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -4.4501477170144003e-308 + call $~lib/bindings/Math/tan + f64.const -4.4501477170144003e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46391,9 +53146,19 @@ unreachable end f64.const -4.450147717014403e-308 + call $~lib/math/NativeMath.tan f64.const -4.450147717014403e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -4.450147717014403e-308 + call $~lib/bindings/Math/tan + f64.const -4.450147717014403e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46404,9 +53169,19 @@ unreachable end f64.const -4.450147717014406e-308 + call $~lib/math/NativeMath.tan f64.const -4.450147717014406e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -4.450147717014406e-308 + call $~lib/bindings/Math/tan + f64.const -4.450147717014406e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46417,9 +53192,19 @@ unreachable end f64.const -8.900295434028806e-308 + call $~lib/math/NativeMath.tan f64.const -8.900295434028806e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -8.900295434028806e-308 + call $~lib/bindings/Math/tan + f64.const -8.900295434028806e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46430,9 +53215,19 @@ unreachable end f64.const -1.1175870895385742e-08 + call $~lib/math/NativeMath.tan f64.const -1.1175870895385742e-08 f64.const 0.28125 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -1.1175870895385742e-08 + call $~lib/bindings/Math/tan + f64.const -1.1175870895385742e-08 + f64.const 0.28125 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46443,9 +53238,19 @@ unreachable end f64.const -1.4901161193847656e-08 + call $~lib/math/NativeMath.tan f64.const -1.4901161193847656e-08 f64.const 0.3333333432674408 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -1.4901161193847656e-08 + call $~lib/bindings/Math/tan + f64.const -1.4901161193847656e-08 + f64.const 0.3333333432674408 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46456,9 +53261,19 @@ unreachable end f64.const 1e-323 + call $~lib/math/NativeMath.tan f64.const 1e-323 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 1e-323 + call $~lib/bindings/Math/tan + f64.const 1e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46469,9 +53284,19 @@ unreachable end f64.const 4.4e-323 + call $~lib/math/NativeMath.tan f64.const 4.4e-323 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 4.4e-323 + call $~lib/bindings/Math/tan + f64.const 4.4e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46482,9 +53307,19 @@ unreachable end f64.const 5.562684646268003e-309 + call $~lib/math/NativeMath.tan f64.const 5.562684646268003e-309 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 5.562684646268003e-309 + call $~lib/bindings/Math/tan + f64.const 5.562684646268003e-309 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46495,9 +53330,19 @@ unreachable end f64.const 1.1125369292536007e-308 + call $~lib/math/NativeMath.tan f64.const 1.1125369292536007e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 1.1125369292536007e-308 + call $~lib/bindings/Math/tan + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46508,9 +53353,19 @@ unreachable end f64.const 2.2250738585072004e-308 + call $~lib/math/NativeMath.tan f64.const 2.2250738585072004e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 2.2250738585072004e-308 + call $~lib/bindings/Math/tan + f64.const 2.2250738585072004e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46521,9 +53376,19 @@ unreachable end f64.const 2.225073858507201e-308 + call $~lib/math/NativeMath.tan f64.const 2.225073858507201e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 2.225073858507201e-308 + call $~lib/bindings/Math/tan + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46534,9 +53399,19 @@ unreachable end f64.const -1e-323 + call $~lib/math/NativeMath.tan f64.const -1e-323 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -1e-323 + call $~lib/bindings/Math/tan + f64.const -1e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46547,9 +53422,19 @@ unreachable end f64.const -4.4e-323 + call $~lib/math/NativeMath.tan f64.const -4.4e-323 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -4.4e-323 + call $~lib/bindings/Math/tan + f64.const -4.4e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46560,9 +53445,19 @@ unreachable end f64.const -5.562684646268003e-309 + call $~lib/math/NativeMath.tan f64.const -5.562684646268003e-309 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -5.562684646268003e-309 + call $~lib/bindings/Math/tan + f64.const -5.562684646268003e-309 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46573,9 +53468,19 @@ unreachable end f64.const -1.1125369292536007e-308 + call $~lib/math/NativeMath.tan f64.const -1.1125369292536007e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -1.1125369292536007e-308 + call $~lib/bindings/Math/tan + f64.const -1.1125369292536007e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46586,9 +53491,19 @@ unreachable end f64.const -2.2250738585072004e-308 + call $~lib/math/NativeMath.tan f64.const -2.2250738585072004e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -2.2250738585072004e-308 + call $~lib/bindings/Math/tan + f64.const -2.2250738585072004e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46599,9 +53514,19 @@ unreachable end f64.const -2.225073858507201e-308 + call $~lib/math/NativeMath.tan f64.const -2.225073858507201e-308 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -2.225073858507201e-308 + call $~lib/bindings/Math/tan + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46820,9 +53745,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.tan f64.const 0 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/tan + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46833,9 +53768,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.tan f64.const -0 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/tan + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46846,9 +53791,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.tan f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46859,9 +53814,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.tan f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -46872,9 +53837,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.tan f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_tan + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -47988,9 +54963,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.06684839057968 f64.const -8 - call $std/math/test_trunc + f64.const -8 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/trunc + f64.const -8 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48000,9 +54985,19 @@ call $~lib/builtins/abort unreachable end - f64.const 4.345239849338305 f64.const 4 - call $std/math/test_trunc + f64.const 4 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/trunc + f64.const 4 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48012,9 +55007,19 @@ call $~lib/builtins/abort unreachable end - f64.const -8.38143342755525 f64.const -8 - call $std/math/test_trunc + f64.const -8 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/trunc + f64.const -8 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48024,9 +55029,19 @@ call $~lib/builtins/abort unreachable end - f64.const -6.531673581913484 f64.const -6 - call $std/math/test_trunc + f64.const -6 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/trunc + f64.const -6 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48036,9 +55051,19 @@ call $~lib/builtins/abort unreachable end - f64.const 9.267056966972586 f64.const 9 - call $std/math/test_trunc + f64.const 9 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/trunc + f64.const 9 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48048,9 +55073,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.6619858980995045 f64.const 0 - call $std/math/test_trunc + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48060,9 +55095,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.4066039223853553 f64.const -0 - call $std/math/test_trunc + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48072,9 +55117,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5617597462207241 f64.const 0 - call $std/math/test_trunc + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48084,9 +55139,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.7741522965913037 f64.const 0 - call $std/math/test_trunc + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48096,9 +55161,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.6787637026394024 f64.const -0 - call $std/math/test_trunc + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48110,7 +55185,17 @@ end f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 - call $std/math/test_trunc + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/trunc + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48122,7 +55207,17 @@ end f64.const inf f64.const inf - call $std/math/test_trunc + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/trunc + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48134,7 +55229,17 @@ end f64.const -inf f64.const -inf - call $std/math/test_trunc + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/trunc + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48146,7 +55251,17 @@ end f64.const 0 f64.const 0 - call $std/math/test_trunc + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48158,7 +55273,17 @@ end f64.const -0 f64.const -0 - call $std/math/test_trunc + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48170,7 +55295,17 @@ end f64.const 1 f64.const 1 - call $std/math/test_trunc + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/trunc + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48182,7 +55317,17 @@ end f64.const -1 f64.const -1 - call $std/math/test_trunc + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/trunc + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48192,9 +55337,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.5 f64.const 0 - call $std/math/test_trunc + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/Math/trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48204,9 +55359,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.5 f64.const -0 - call $std/math/test_trunc + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/Math/trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48216,9 +55381,19 @@ call $~lib/builtins/abort unreachable end - f64.const 1.0000152587890625 f64.const 1 - call $std/math/test_trunc + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/Math/trunc + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48228,9 +55403,19 @@ call $~lib/builtins/abort unreachable end - f64.const -1.0000152587890625 f64.const -1 - call $std/math/test_trunc + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/Math/trunc + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48240,9 +55425,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0.9999923706054688 f64.const 0 - call $std/math/test_trunc + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/Math/trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48252,9 +55447,19 @@ call $~lib/builtins/abort unreachable end - f64.const -0.9999923706054688 f64.const -0 - call $std/math/test_trunc + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/Math/trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48264,9 +55469,19 @@ call $~lib/builtins/abort unreachable end - f64.const 7.888609052210118e-31 f64.const 0 - call $std/math/test_trunc + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/Math/trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48276,9 +55491,19 @@ call $~lib/builtins/abort unreachable end - f64.const -7.888609052210118e-31 f64.const -0 - call $std/math/test_trunc + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -48829,198 +56054,6 @@ call $~lib/builtins/abort unreachable end - f64.const 0 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -128 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967295 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967295.5 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967296 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4031 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967297 - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4032 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9007199254740991 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9007199254740991 - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.220446049250313e-16 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1056 - i32.const 4040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end i64.const 0 i64.const 0 call $~lib/math/ipow64 diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat index a487998829..67216fe091 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -1,11 +1,9 @@ (module (type $none_=>_none (func)) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -14,461 +12,474 @@ (export "mod" (func $std/mod/mod)) (export "memory" (memory $0)) (start $~start) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) + (func $std/mod/test_fmod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 i64) - (local $4 i64) + (local $4 f64) (local $5 i64) (local $6 i64) (local $7 i64) (local $8 i64) - 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 $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 $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.gt_s + i64.const 1 + i64.shl + local.tee $8 + i64.eqz + select + select if - local.get $2 + 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 + 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 $3 + local.get $5 i64.ge_u - if (result i64) - local.get $2 + if local.get $3 + local.get $5 i64.eq br_if $folding-inner0 - local.get $2 local.get $3 + local.get $5 i64.sub - else - local.get $2 + local.set $3 end - i64.const 1 + local.get $3 + local.get $3 + i64.const 11 i64.shl - local.set $2 - local.get $4 - i64.const 1 + i64.clz + local.tee $5 + i64.shl + local.set $3 + local.get $6 + local.get $5 i64.sub - local.set $4 - br $while-continue|0 + 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 + end + local.get $9 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + br $__inlined_func$~lib/math/NativeMath.mod end + local.get $0 + f64.const 0 + f64.mul end - 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.tee $1 + local.get $1 + f64.ne 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/check (param $0 f64) (param $1 f64) (result i32) - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - local.get $0 f64.ne - return - end - local.get $1 - f64.const 0 - f64.eq - if + br_if $__inlined_func$std/mod/check + drop f64.const 1 - local.get $1 + local.get $2 f64.div f64.const 1 - local.get $0 + local.get $1 f64.div f64.eq - return - end - local.get $0 - local.get $1 - f64.eq - ) - (func $std/mod/test_fmod (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 - call $std/mod/check - if (result i32) - local.get $0 + local.get $2 + f64.const 0 + f64.eq + br_if $__inlined_func$std/mod/check + drop local.get $1 - call $std/mod/mod local.get $2 - call $std/mod/check + f64.eq + end + if (result i32) + block $__inlined_func$std/mod/check0 (result i32) + local.get $0 + local.get $4 + call $std/mod/mod + local.tee $0 + local.get $0 + f64.ne + local.get $2 + local.get $2 + f64.ne + br_if $__inlined_func$std/mod/check0 + drop + f64.const 1 + local.get $2 + f64.div + f64.const 1 + local.get $0 + f64.div + f64.eq + local.get $2 + f64.const 0 + f64.eq + br_if $__inlined_func$std/mod/check0 + drop + local.get $0 + local.get $2 + f64.eq + end else i32.const 0 end ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) + (func $std/mod/test_fmodf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - 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 $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 $4 - local.get $5 - i32.gt_s + 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 $2 + 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 + local.get $3 + local.get $4 i32.ge_u - if (result i32) - local.get $2 + if local.get $3 + local.get $4 i32.eq br_if $folding-inner0 - local.get $2 local.get $3 + local.get $4 i32.sub - else - local.get $2 + local.set $3 end - i32.const 1 + local.get $3 + local.get $3 + i32.const 8 + i32.shl + i32.clz + local.tee $4 i32.shl - local.set $2 + local.set $3 + local.get $5 local.get $4 - i32.const 1 i32.sub - local.set $4 - br $while-continue|0 + 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 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 88733b3508..411aed967b 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1,11 +1,11 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -34,15 +34,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17860)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -94,170 +85,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17860 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17860 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -545,12 +520,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -904,7 +879,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -967,7 +947,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1047,7 +1032,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17860 i32.ge_u if @@ -1057,19 +1042,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1086,11 +1071,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1100,10 +1088,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1170,23 +1160,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl @@ -1196,18 +1238,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1215,17 +1257,17 @@ unreachable end end + local.get $3 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1236,7 +1278,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1250,57 +1292,57 @@ call $~lib/builtins/abort unreachable end + local.get $3 local.get $0 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $1 i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 - local.get $3 + local.get $1 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $3 + local.get $0 i32.load i32.const -4 i32.and i32.add + local.get $3 local.get $0 - local.get $1 i32.load i32.const -4 i32.and @@ -1310,71 +1352,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 + local.get $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 8 i32.store offset=16 - local.get $0 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $0 i32.load @@ -1454,14 +1460,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1479,9 +1500,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/rt/itcms/__new local.tee $0 i32.store diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 8fbd296da9..a7c036a995 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -1,9 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -19,174 +17,129 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17596)) (export "memory" (memory $0)) (start $~start) - (func $~lib/object/Object.is (param $0 f64) (param $1 f64) (result i32) + (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 - f64.eq + i32.eq if - local.get $0 - i64.reinterpret_f64 - local.get $1 - i64.reinterpret_f64 - i64.eq + i32.const 1 return end - local.get $0 - local.get $0 - f64.ne local.get $1 - local.get $1 - f64.ne - i32.and - ) - (func $~lib/object/Object.is (param $0 f32) (param $1 f32) (result i32) + i32.eqz + i32.const 1 local.get $0 - local.get $1 - f32.eq + select if - local.get $0 - i32.reinterpret_f32 - local.get $1 - i32.reinterpret_f32 - i32.eq + i32.const 0 return end local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.and - ) - (func $~lib/object/Object.is (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 0 - i32.ne + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 local.get $1 - i32.const 0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - i32.eq - ) - (func $~lib/object/Object.is<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 - local.get $0 - local.get $1 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $__inlined_func$~lib/string/String.__eq - drop + if i32.const 0 + return + end + block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 + local.set $2 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 + local.set $3 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.eqz + else i32.const 0 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - 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 - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 + end + if + loop $do-continue|0 local.get $2 + i64.load + local.get $3 + i64.load + i64.eq if + local.get $2 + i32.const 8 + i32.add + local.set $2 local.get $3 - i32.load16_u - local.tee $2 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 - i32.const 2 + i32.const 8 i32.add local.set $3 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + local.get $2 + i32.load16_u + local.tee $1 + local.get $3 + i32.load16_u + local.tee $4 + i32.ne + if local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + 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 + br $while-continue|1 end - i32.const 0 end - i32.eqz + i32.const 0 end + i32.eqz ) (func $~start - call $start:std/object - ) - (func $start:std/object + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -203,395 +156,18 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i64.const 0 i64.store - f64.const 0 - f64.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1e-309 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1e-309 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1056 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1104 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1104 i32.store offset=4 i32.const 1104 i32.const 1104 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String.__eq i32.const 1 i32.ne if @@ -603,14 +179,15 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1104 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1136 i32.store offset=4 i32.const 1104 i32.const 1136 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String.__eq if i32.const 0 i32.const 1056 @@ -620,14 +197,15 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1104 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1168 i32.store offset=4 i32.const 1104 i32.const 1168 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String.__eq if i32.const 0 i32.const 1056 @@ -638,7 +216,7 @@ end i32.const 0 i32.const 0 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String.__eq i32.const 1 i32.ne if @@ -654,7 +232,7 @@ i32.store i32.const 1200 i32.const 0 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String.__eq if i32.const 0 i32.const 1056 @@ -668,7 +246,7 @@ i32.store offset=4 i32.const 0 i32.const 1200 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String.__eq if i32.const 0 i32.const 1056 diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 8bdf61ac85..72ac516e35 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,9 +1,9 @@ (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_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param 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))) @@ -102,15 +102,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17956)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -153,170 +144,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17956 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17956 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1520 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1520 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1524 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -604,12 +579,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -963,7 +938,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1026,7 +1006,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1106,7 +1091,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17956 i32.ge_u if @@ -1116,19 +1101,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1145,11 +1130,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1159,10 +1147,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1229,23 +1219,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 + (local $4 i32) + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1255,18 +1297,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1274,15 +1316,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1309,22 +1351,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1333,32 +1375,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1370,70 +1412,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 8 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1478,7 +1484,163 @@ (local $2 i32) i32.const 1 local.set $2 - loop $while-continue|0 + local.get $0 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $1 + i32.shl + i32.const 0 + local.get $1 + i32.const 32 + i32.lt_u + select + return + end + local.get $1 + i32.const 0 + i32.le_s + if + local.get $0 + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + return + end + local.get $1 + i32.eqz + local.get $0 + i32.const 1 + i32.eq + i32.or + return + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + return + else + local.get $1 + i32.const 2 + i32.eq + if + local.get $0 + local.get $0 + i32.mul + return + else + local.get $1 + i32.const 32 + i32.lt_s + if + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 31 + local.get $1 + i32.clz + i32.sub + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + end + local.get $2 + return + end + end + end + end + loop $while-continue|1 local.get $1 if local.get $0 @@ -1498,43 +1660,11 @@ local.get $0 i32.mul local.set $0 - br $while-continue|0 + br $while-continue|1 end end local.get $2 ) - (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.eq - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.eq - else - i32.const 0 - end - ) - (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.ne - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.ne - else - i32.const 0 - end - ) (func $~lib/rt/__visit_globals (local $0 i32) global.get $std/operator-overloading/a1 @@ -1934,7 +2064,13 @@ (func $~start call $start:std/operator-overloading ) - (func $~stack_check + (func $start:std/operator-overloading + (local $0 i32) + (local $1 i32) + 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 1572 i32.lt_s @@ -1946,19 +2082,11 @@ call $~lib/builtins/abort unreachable end - ) - (func $start:std/operator-overloading - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $0 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $0 i64.const 0 i64.store offset=8 memory.size @@ -1969,14 +2097,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 1 i32.const 2 @@ -1987,10 +2130,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/a2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/a1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/a2 local.tee $0 i32.store offset=4 @@ -2036,10 +2180,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/s2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/s1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/s2 local.tee $0 i32.store offset=4 @@ -2083,10 +2228,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/m2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/m1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/m2 local.tee $0 i32.store offset=4 @@ -2132,10 +2278,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/d2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/d1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/d2 local.tee $0 i32.store offset=4 @@ -2181,10 +2328,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/f2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/f1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/f2 local.tee $0 i32.store offset=4 @@ -2229,10 +2377,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/p2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/p1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/p2 local.tee $0 i32.store offset=4 @@ -2278,10 +2427,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/n2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/n1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/n2 local.tee $0 i32.store offset=4 @@ -2327,10 +2477,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/o2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/o1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/o2 local.tee $0 i32.store offset=4 @@ -2376,10 +2527,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/x2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/x1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/x2 local.tee $0 i32.store offset=4 @@ -2425,16 +2577,28 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/eq2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/eq1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/eq2 local.tee $0 i32.store offset=4 local.get $1 + i32.load local.get $0 - call $std/operator-overloading/Tester.equals + i32.load + i32.eq + if (result i32) + local.get $1 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.eq + else + i32.const 0 + end global.set $std/operator-overloading/eq global.get $std/operator-overloading/eq i32.const 1 @@ -2456,16 +2620,28 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/eq4 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/eq3 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/eq4 local.tee $0 i32.store offset=4 local.get $1 + i32.load local.get $0 - call $std/operator-overloading/Tester.equals + i32.load + i32.eq + if (result i32) + local.get $1 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.eq + else + i32.const 0 + end global.set $std/operator-overloading/eqf global.get $std/operator-overloading/eqf if @@ -2477,16 +2653,28 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/eq1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/eq2 local.tee $0 i32.store offset=4 local.get $1 + i32.load local.get $0 - call $std/operator-overloading/Tester.notEquals + i32.load + i32.ne + if (result i32) + local.get $1 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.ne + else + i32.const 0 + end global.set $std/operator-overloading/eq global.get $std/operator-overloading/eq if @@ -2498,16 +2686,28 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/eq3 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/eq4 local.tee $0 i32.store offset=4 local.get $1 + i32.load local.get $0 - call $std/operator-overloading/Tester.notEquals + i32.load + i32.ne + if (result i32) + local.get $1 + i32.load offset=4 + local.get $0 + i32.load offset=4 + i32.ne + else + i32.const 0 + end global.set $std/operator-overloading/eqf global.get $std/operator-overloading/eqf i32.const 1 @@ -2529,10 +2729,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/gt2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/gt1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/gt2 local.tee $0 i32.store offset=4 @@ -2571,10 +2772,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/gte2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/gte1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/gte2 local.tee $0 i32.store offset=4 @@ -2613,10 +2815,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/le2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/le1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/le2 local.tee $0 i32.store offset=4 @@ -2655,10 +2858,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/leq2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/leq1 local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/leq2 local.tee $0 i32.store offset=4 @@ -3181,17 +3385,18 @@ call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais1 global.get $~lib/memory/__stack_pointer - global.get $std/operator-overloading/ais1 local.tee $0 + global.get $std/operator-overloading/ais1 + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 i32.load i32.const 1 i32.add - local.get $0 + local.get $1 i32.load offset=4 i32.const 1 i32.add @@ -3202,10 +3407,11 @@ call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/ais1 local.tee $1 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/ais2 local.tee $0 i32.store offset=8 @@ -3265,10 +3471,11 @@ call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii2 global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $std/operator-overloading/aii1 local.tee $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 global.get $std/operator-overloading/aii2 local.tee $0 i32.store offset=12 @@ -3316,11 +3523,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 3 call $~lib/rt/itcms/__new local.tee $2 @@ -3343,11 +3561,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 4 call $~lib/rt/itcms/__new local.tee $2 @@ -3370,11 +3599,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 5 call $~lib/rt/itcms/__new local.tee $2 diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index df0d3d592d..93c99e2245 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -14,183 +14,771 @@ (global $std/pointer/buf (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + i32.const 8 + local.set $4 + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $4 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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|0 + end + end + local.get $0 + i32.const 3 + i32.and + i32.eqz + if + loop $while-continue|1 + local.get $4 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $4 + i32.const 16 + i32.sub + local.set $4 + br $while-continue|1 + end + end + local.get $4 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $4 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $4 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $4 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $4 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 + local.tee $3 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $2 + i32.const 2 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $4 - i32.const 1 + i32.const 3 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 + loop $while-continue|3 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 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $2 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $2 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $2 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $2 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $2 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $4 + i32.const 16 + i32.sub + local.set $4 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $3 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $2 + i32.const 2 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $4 + i32.const 2 + i32.sub + local.set $4 loop $while-continue|4 local.get $4 - i32.const 8 + i32.const 18 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.load offset=2 + local.tee $2 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $2 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $2 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $2 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $2 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 i32.add - i64.load - i64.store + local.set $0 + local.get $4 + i32.const 16 + i32.sub + local.set $4 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 local.get $4 + i32.const 19 + i32.ge_u if local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $2 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $2 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $2 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $2 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $2 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $4 + i32.const 16 + i32.sub + local.set $4 br $while-continue|5 end end end end + local.get $4 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $3 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $2 + i32.const 2 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $4 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $3 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $2 + i32.const 2 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $4 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $3 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $2 + i32.const 2 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $4 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $3 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $2 + i32.const 2 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $4 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end ) (func $start:std/pointer (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 8 global.set $std/pointer/one i32.const 24 @@ -271,9 +859,10 @@ i32.add global.set $std/pointer/one global.get $std/pointer/one + local.tee $1 global.set $std/pointer/nextOne + local.get $1 global.get $std/pointer/nextOne - global.get $std/pointer/one i32.ne if i32.const 0 @@ -353,9 +942,188 @@ global.get $std/pointer/two local.tee $1 if - local.get $0 - local.get $1 - call $~lib/memory/memory.copy + 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 else local.get $0 i32.const 0 @@ -500,9 +1268,12 @@ unreachable end global.get $std/pointer/buf + local.tee $0 + i32.const 8 + i32.add f32.const 1.2999999523162842 - f32.store offset=8 - global.get $std/pointer/buf + f32.store + local.get $0 f32.load offset=8 f32.const 1.2999999523162842 f32.ne @@ -539,9 +1310,10 @@ unreachable end global.get $std/pointer/buf + local.tee $1 f32.const 1.399999976158142 f32.store - global.get $std/pointer/buf + local.get $1 f32.load f32.const 1.399999976158142 f32.ne diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index dc6b765f06..b9d726e336 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1,27 +1,19 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (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 $i32_i64_=>_none (func (param i32 i64))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -59,15 +51,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18220)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -115,49 +98,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -182,7 +126,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -205,7 +149,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -215,15 +159,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -259,7 +208,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -566,12 +537,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -925,7 +896,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -988,7 +964,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1068,7 +1049,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18220 i32.ge_u if @@ -1078,19 +1059,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1107,11 +1088,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1105,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1145,28 +1131,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1263,268 +1249,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1622,6 +1409,10 @@ ) (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 @@ -1639,12 +1430,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1660,13 +1451,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1680,54 +1472,267 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) - (local $2 i32) - local.get $1 - i32.eqz + local.get $6 + i32.const 1073741820 + i32.ge_u if - return + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 30 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 + 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 $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/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 i32.const 294 i32.const 14 call $~lib/builtins/abort @@ -1750,8 +1755,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -1763,7 +1766,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1774,24 +1777,13 @@ end end ) - (func $~lib/set/Set#set:buckets (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) - (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - local.get $1 - i32.store offset=8 + i32.load local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/itcms/__link - ) - (func $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 i32.const 24 i32.shl i32.const 24 @@ -1804,75 +1796,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load local.set $0 - loop $while-continue|0 - local.get $0 - if + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end if local.get $0 - return + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + i32.const 0 + local.set $0 end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find i32.const 0 i32.ne ) @@ -1888,11 +1867,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -1916,7 +1906,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 local.get $0 i32.load offset=16 i32.const 3 @@ -1927,33 +1917,63 @@ local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $7 i32.load8_s - local.tee $7 + local.tee $8 i32.store8 local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + 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 $7 + local.tee $8 i32.load i32.store offset=4 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -1961,22 +1981,28 @@ i32.add local.set $2 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/set/Set#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/set/Set#set:entries + 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 @@ -1994,11 +2020,79 @@ (local $3 i32) (local $4 i32) local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 i32.eqz if local.get $0 @@ -2035,11 +2129,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $2 i32.const 3 i32.shl i32.add @@ -2055,7 +2149,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.and @@ -2070,422 +2164,2197 @@ i32.store end ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 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 + i32.const 3 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 i32.add - i64.load - i64.store + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end - ) - (func $~lib/array/ensureSize (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 $1 - local.get $0 - i32.load offset=8 - local.tee $5 local.get $2 - i32.shr_u - i32.gt_u + i32.const 16 + i32.and if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.load - local.tee $6 - local.set $3 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $1 - local.get $2 - i32.shl - local.tee $7 - local.tee $4 - local.get $6 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $2 - local.get $4 - i32.store offset=16 - local.get $3 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $4 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - local.get $4 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $4 - i32.gt_u - select - call $~lib/memory/memory.copy - end local.get $1 - local.get $5 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add - local.get $7 - local.get $5 - i32.sub - call $~lib/memory/memory.fill + local.tee $0 local.get $1 - local.get $6 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - end + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $7 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 i32.const 1 i32.add - local.tee $3 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_s - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.load offset=20 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + ) + (func $~lib/array/ensureSize (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 $7 + 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 1616 + i32.const 14 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $1 + local.get $2 + i32.shl + local.tee $8 + local.tee $4 + local.get $0 + i32.load + local.tee $9 + local.tee $1 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $4 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $4 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $5 + local.set $2 + local.get $4 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $6 + block $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $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 $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $3 + 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 + if + local.get $2 + local.tee $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $3 + 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 $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 $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 + end + end + local.get $5 + local.set $1 + end + local.get $1 + local.get $7 + i32.add + local.get $8 + local.get $7 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $9 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $8 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_s + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 i32.div_s i32.lt_s else i32.const 0 end if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + ) + (func $~lib/set/Set#clear (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + 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 + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + 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 + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $8 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 0 + i32.store + local.get $1 + i32.load offset=8 + local.set $9 + local.get $1 + i32.load offset=16 + local.tee $10 + local.set $4 + local.get $7 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + local.get $4 + call $~lib/memory/memory.fill + local.get $2 + local.get $5 + i32.store + local.get $2 + local.get $5 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $2 + i32.store + loop $for-loop|0 + local.get $6 + local.get $10 + i32.lt_s + if + local.get $9 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $0 + local.get $4 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + i32.const 0 + call $~lib/array/ensureSize + 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 $8 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|4 + local.get $3 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|4 + end + end + local.get $0 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|6 + local.get $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + call $~lib/set/Set#delete + local.get $1 + local.get $3 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|6 + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|8 + local.get $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $3 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + call $~lib/set/Set#add + local.get $1 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + call $~lib/set/Set#delete + local.get $1 + local.get $3 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|8 + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + 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 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#rehash (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) + 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 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + 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 $6 + 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 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $7 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load8_u + local.tee $8 + i32.store8 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + 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=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $7 + i32.const 8 + i32.add + local.set $7 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + 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/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $2 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + return end - ) - (func $~lib/set/Set#clear (param $0 i32) - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets - local.get $0 - i32.const 3 + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or i32.store offset=4 local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries local.get $0 - i32.const 4 - i32.store offset=12 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 local.get $0 - i32.const 0 - i32.store offset=16 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 local.get $0 - i32.const 0 - i32.store offset=20 + i32.load offset=20 + local.tee $1 + local.get $1 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) (local $1 i32) (local $2 i32) @@ -2501,485 +4370,1230 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 i32.lt_s - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + call $~lib/set/Set#constructor + local.tee $2 + i32.store + loop $for-loop|1 + local.get $0 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find1 + loop $while-continue|02 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find1 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|02 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + 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 $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $2 + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find4 + loop $while-continue|05 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find4 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|05 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find7 + loop $while-continue|08 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find7 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|08 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $10 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $4 - call $~lib/memory/memory.fill - local.get $1 - local.get $5 - call $~lib/set/Set#set:buckets - local.get $1 - local.get $5 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $1 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - loop $for-loop|0 - local.get $6 - local.get $10 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $8 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $9 + local.get $2 + i32.load offset=16 + local.tee $10 + local.set $4 + local.get $7 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 1073741820 + i32.gt_u if - local.get $8 + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + local.get $4 + call $~lib/memory/memory.fill + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + local.get $1 + local.get $5 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $1 + i32.store + loop $for-loop|0 local.get $6 - i32.const 3 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + local.get $10 + i32.lt_s + if + local.get $9 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $4 + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $1 + local.get $0 + i32.const 0 + call $~lib/array/ensureSize + local.get $1 + 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 $8 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=8 + loop $for-loop|4 + local.get $3 + local.get $1 + i32.load offset=12 + i32.lt_s if local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $6 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - local.get $4 - i32.load8_s - call $~lib/array/Array#__set + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - i32.const 1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.set $0 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add + i32.load local.set $0 + block $__inlined_func$~lib/set/Set#find11 + loop $while-continue|012 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $7 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $6 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find11 + local.get $7 + i32.const -2 + i32.and + local.set $0 + br $while-continue|012 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|4 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 end - end - local.get $1 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|4 - local.get $3 - local.get $1 - i32.load offset=12 - i32.lt_s + local.get $4 + i32.load offset=20 + local.get $2 + i32.load offset=20 + i32.ne if - local.get $2 - local.get $1 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|6 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i32.const 255 + i32.and + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find14 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find17 + loop $while-continue|018 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find17 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|018 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|6 end - local.get $4 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 end - end - local.get $4 - i32.load offset=20 - local.get $2 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + local.get $2 + i32.load offset=20 i32.const 50 - i32.lt_s + i32.ne if - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|8 - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#add - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 + local.set $3 + loop $for-loop|8 local.get $3 - call $~lib/set/Set#has + i32.const 255 + i32.and + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find20 + loop $while-continue|021 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find20 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|021 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find23 + loop $while-continue|024 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find23 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|024 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find26 + loop $while-continue|027 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find26 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|027 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|8 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|8 end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/set/Set#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + 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 - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 49 - 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 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/hash/HASH (param $0 i32) (result i32) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - i32.const 255 - i32.and + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761395 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2991,11 +5605,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -3019,7 +5644,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 local.get $0 i32.load offset=16 i32.const 3 @@ -3030,33 +5655,63 @@ local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 - i32.load8_u - local.tee $7 - i32.store8 + local.get $7 + i32.load16_s + local.tee $8 + i32.store16 local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + 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 $7 + local.tee $8 i32.load i32.store offset=4 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -3064,22 +5719,28 @@ i32.add local.set $2 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/set/Set#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/set/Set#set:entries + 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 @@ -3092,16 +5753,84 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 i32.eqz if local.get $0 @@ -3131,24 +5860,24 @@ i32.const 1 i32.or end - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end local.get $0 i32.load offset=8 local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $2 i32.const 3 i32.shl i32.add local.tee $2 local.get $1 - i32.store8 + i32.store16 local.get $0 local.get $0 i32.load offset=20 @@ -3158,7 +5887,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.and @@ -3173,7 +5902,45 @@ i32.store end ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -3189,17 +5956,88 @@ local.get $0 i32.load offset=4 local.get $1 + i32.const 1 + i32.shl i32.add - i32.load8_u + i32.load16_s ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 i32.eqz if return @@ -3248,541 +6086,501 @@ if local.get $0 local.get $2 - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|1 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $10 - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $4 - call $~lib/memory/memory.fill - local.get $1 - local.get $5 - call $~lib/set/Set#set:buckets - local.get $1 - local.get $5 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $1 - local.get $4 - i32.store offset=12 + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 12 + i32.sub global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - loop $for-loop|0 - local.get $6 - local.get $10 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 i32.lt_s - if - local.get $8 - local.get $6 - i32.const 3 + br_if $folding-inner1 + 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 + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|1 + local.get $0 + i32.const 16 i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s if local.get $1 local.get $0 - local.get $4 - i32.load8_u - call $~lib/array/Array#__set + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + 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 $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 end - end - local.get $1 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|4 - local.get $3 local.get $1 - i32.load offset=12 - i32.lt_s + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $2 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end - local.get $4 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 end - end - local.get $4 - i32.load offset=20 - local.get $2 - i32.load offset=20 - i32.ne - if + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 - local.get $3 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $10 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $6 + i32.const 0 + i32.store + local.get $1 + i32.load offset=8 + local.set $11 + local.get $1 + i32.load offset=16 + local.tee $7 + local.set $8 + local.get $6 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 16 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $7 + i32.const 536870910 + i32.gt_u if - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.shl + local.tee $9 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $9 + call $~lib/memory/memory.fill + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $4 + call $~lib/rt/itcms/__link + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + local.get $9 + i32.store offset=8 + local.get $2 + local.get $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + local.get $2 + i32.store + loop $for-loop|0 + local.get $5 + local.get $7 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $11 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $0 + local.get $4 + i32.load16_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $2 + end + local.get $2 + local.get $0 + i32.const 1 + call $~lib/array/ensureSize + 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 $10 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|4 local.get $3 - call $~lib/set/Set#delete local.get $2 - local.get $3 - call $~lib/set/Set#has + i32.load offset=12 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|4 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|8 - local.get $3 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u + local.get $0 + i32.load offset=20 + local.get $1 + i32.load offset=20 + i32.ne if - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#add - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|6 local.get $3 - call $~lib/set/Set#has + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + call $~lib/set/Set#delete + local.get $1 + local.get $3 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|6 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|8 end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 49 - 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 $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|8 + local.get $3 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s if - local.get $0 - return + local.get $1 + local.get $3 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + call $~lib/set/Set#add + local.get $1 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $3 + call $~lib/set/Set#delete + local.get $1 + local.get $3 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|8 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + 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 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3794,11 +6592,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -3822,7 +6631,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 local.get $0 i32.load offset=16 i32.const 3 @@ -3833,33 +6642,61 @@ local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 - i32.load16_s - local.tee $7 + local.get $7 + i32.load16_u + local.tee $8 i32.store16 local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + 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 $7 + local.tee $8 i32.load i32.store offset=4 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -3867,22 +6704,28 @@ i32.add local.set $2 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/set/Set#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/set/Set#set:entries + 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 @@ -3895,16 +6738,82 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 i32.eqz if local.get $0 @@ -3934,18 +6843,18 @@ i32.const 1 i32.or end - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end local.get $0 i32.load offset=8 local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $2 i32.const 3 i32.shl i32.add @@ -3961,7 +6870,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.and @@ -3976,34 +6885,18 @@ i32.store end ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end local.get $0 i32.load offset=4 @@ -4011,47 +6904,83 @@ i32.const 1 i32.shl i32.add - local.get $2 - i32.store16 + i32.load16_u ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize + i32.load local.get $0 + i32.load offset=4 local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - local.tee $1 i32.eqz if return @@ -4100,10 +7029,10 @@ if local.get $0 local.get $2 - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) (local $1 i32) (local $2 i32) @@ -4120,488 +7049,1155 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + call $~lib/set/Set#constructor + local.tee $2 + i32.store + loop $for-loop|1 + local.get $0 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find1 + loop $while-continue|02 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find1 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|02 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + 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 + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find4 + loop $while-continue|05 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find4 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|05 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find7 + loop $while-continue|08 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find7 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|08 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + local.get $2 + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $10 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $11 + local.get $2 + i32.load offset=16 + local.tee $6 + 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 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 536870910 + i32.gt_u if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.shl + local.tee $9 i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $6 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $8 - call $~lib/memory/memory.fill - local.get $1 - local.get $4 - call $~lib/set/Set#set:buckets - local.get $1 - local.get $4 - i32.store offset=4 - local.get $1 - local.get $8 - i32.store offset=8 - local.get $1 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - loop $for-loop|0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $9 + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + local.get $9 + i32.store offset=8 + local.get $1 + local.get $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $5 - local.get $6 - i32.lt_s - if - local.get $10 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + local.get $1 + i32.store + loop $for-loop|0 + local.get $6 + local.get $7 + i32.gt_s + if + local.get $11 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $4 + i32.load16_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + local.get $1 + local.get $0 + i32.const 1 + call $~lib/array/ensureSize + local.get $1 + 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 $10 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=8 + loop $for-loop|4 + local.get $3 + local.get $1 + i32.load offset=12 + i32.lt_s if local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - local.get $4 - i32.load16_s - call $~lib/array/Array#__set + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - i32.const 1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.set $0 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add + i32.load local.set $0 + block $__inlined_func$~lib/set/Set#find11 + loop $while-continue|012 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $6 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $5 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find11 + local.get $6 + i32.const -2 + i32.and + local.set $0 + br $while-continue|012 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|4 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end - end - local.get $1 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|4 - local.get $3 - local.get $1 - i32.load offset=12 - i32.lt_s + local.get $4 + i32.load offset=20 + local.get $2 + i32.load offset=20 + i32.ne if - local.get $2 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $4 - i32.load offset=20 - local.get $2 - i32.load offset=20 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 + local.set $3 + loop $for-loop|6 local.get $3 - call $~lib/set/Set#has + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find14 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find17 + loop $while-continue|018 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find17 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|018 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|6 + end end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|8 - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $2 + i32.load offset=20 i32.const 50 - i32.lt_s + i32.ne if - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#add - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|8 local.get $3 - call $~lib/set/Set#has + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find20 + loop $while-continue|021 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find20 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|021 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find23 + loop $while-continue|024 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find23 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|024 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find26 + loop $while-continue|027 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find26 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|027 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|8 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|8 end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 49 - 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 $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - i32.const 0 - i32.ne + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/set/Set#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + 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 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4613,11 +8209,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -4641,7 +8248,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 local.get $0 i32.load offset=16 i32.const 3 @@ -4652,33 +8259,59 @@ local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 - i32.load16_u - local.tee $7 - i32.store16 + local.get $7 + i32.load + local.tee $8 + i32.store local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + 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 $7 + local.tee $8 i32.load i32.store offset=4 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -4686,22 +8319,28 @@ i32.add local.set $2 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/set/Set#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/set/Set#set:entries + 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 @@ -4714,16 +8353,78 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 i32.eqz if local.get $0 @@ -4753,24 +8454,24 @@ i32.const 1 i32.or end - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end local.get $0 i32.load offset=8 local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $2 i32.const 3 i32.shl i32.add local.tee $2 local.get $1 - i32.store16 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -4780,7 +8481,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.and @@ -4795,7 +8496,45 @@ i32.store end ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -4808,22 +8547,85 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - local.tee $1 i32.eqz if return @@ -4864,547 +8666,1135 @@ i32.const 3 i32.mul i32.const 4 - i32.div_s + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + call $~lib/set/Set#constructor + local.tee $2 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find1 + loop $while-continue|02 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find1 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|02 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find4 + loop $while-continue|05 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find4 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|05 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find7 + loop $while-continue|08 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find7 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|08 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + 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 + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $10 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 i32.lt_s - else + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 i32.const 0 - end - if - local.get $0 + i32.store local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|1 + i32.load offset=8 + local.set $11 + local.get $2 + i32.load offset=16 + local.tee $6 + 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 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 + i32.store local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $6 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $8 - call $~lib/memory/memory.fill - local.get $1 - local.get $4 - call $~lib/set/Set#set:buckets - local.get $1 - local.get $4 - i32.store offset=4 - local.get $1 - local.get $8 - i32.store offset=8 - local.get $1 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - loop $for-loop|0 - local.get $5 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 local.get $6 - i32.lt_s + i32.const 268435455 + i32.gt_u if - local.get $10 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 2 + i32.shl + local.tee $9 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $9 + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + local.get $9 + i32.store offset=8 + local.get $1 + local.get $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $1 + i32.store + loop $for-loop|01 + local.get $6 + local.get $7 + i32.gt_s if - local.get $1 - local.get $0 - local.get $4 - i32.load16_u - call $~lib/array/Array#__set - local.get $0 + local.get $11 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $4 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $7 i32.const 1 i32.add - local.set $0 + local.set $7 + br $for-loop|01 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 end - end - local.get $1 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|4 - local.get $3 local.get $1 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $1 + local.get $0 + i32.const 2 + call $~lib/array/ensureSize + local.get $1 + 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 $10 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=8 + loop $for-loop|2 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + local.get $1 + i32.load offset=12 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.set $0 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find11 + loop $while-continue|012 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $6 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $5 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find11 + local.get $6 + i32.const -2 + i32.and + local.set $0 + br $while-continue|012 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end - local.get $4 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 end - end - local.get $4 - i32.load offset=20 - local.get $2 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 - local.get $3 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u + local.get $4 + i32.load offset=20 + local.get $2 + i32.load offset=20 + i32.ne if - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|3 local.get $3 - call $~lib/set/Set#has + i32.const 50 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find14 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find17 + loop $while-continue|018 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find17 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|018 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|3 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|8 - local.get $3 - i32.const 65535 - i32.and + local.get $2 + i32.load offset=20 i32.const 50 - i32.lt_u + i32.ne if - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#add - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|8 + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 - if i32.const 0 - i32.const 1568 - i32.const 49 - 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 $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 + local.set $3 + loop $for-loop|4 + local.get $3 + i32.const 50 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add i32.load - i32.eq - end - if + local.set $0 + block $__inlined_func$~lib/set/Set#find20 + loop $while-continue|021 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find20 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|021 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find23 + loop $while-continue|024 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find23 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|024 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find26 + loop $while-continue|027 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find26 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|027 + end + end + i32.const 0 + local.set $0 + end local.get $0 - return + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|4 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/set/Set#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + 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 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5416,11 +9806,22 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -5444,7 +9845,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 local.get $0 i32.load offset=16 i32.const 3 @@ -5455,33 +9856,59 @@ local.set $2 loop $while-continue|0 local.get $4 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $7 i32.load - local.tee $7 + local.tee $8 i32.store local.get $2 local.get $6 - local.get $7 - call $~lib/util/hash/HASH local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + 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 $7 + local.tee $8 i32.load i32.store offset=4 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -5489,22 +9916,28 @@ i32.add local.set $2 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 + local.set $7 br $while-continue|0 end end local.get $0 local.get $6 - call $~lib/set/Set#set:buckets + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 - call $~lib/set/Set#set:entries + 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 @@ -5517,16 +9950,78 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 i32.eqz if local.get $0 @@ -5556,18 +10051,18 @@ i32.const 1 i32.or end - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end local.get $0 i32.load offset=8 local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $2 i32.const 3 i32.shl i32.add @@ -5583,7 +10078,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.and @@ -5598,34 +10093,18 @@ i32.store end ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end local.get $0 i32.load offset=4 @@ -5633,47 +10112,79 @@ i32.const 2 i32.shl i32.add - local.get $2 - i32.store + i32.load ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize + i32.load local.get $0 + i32.load offset=4 local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and i32.const 2 i32.shl i32.add i32.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - local.tee $1 i32.eqz if return @@ -5709,1231 +10220,1614 @@ if (result i32) local.get $0 i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + call $~lib/set/Set#constructor + local.tee $2 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find1 + loop $while-continue|02 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find1 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|02 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find4 + loop $while-continue|05 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find4 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|05 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/set/Set#add + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find7 + loop $while-continue|08 + local.get $1 + if + local.get $1 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find7 + local.get $5 + i32.const -2 + i32.and + local.set $1 + br $while-continue|08 + end + end + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + 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 + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $10 i32.const 4 - i32.div_s + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 i32.lt_s - else + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 i32.const 0 - end - if - local.get $0 + i32.store local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|0 - local.get $1 - i32.const 100 + i32.load offset=8 + local.set $11 + local.get $2 + i32.load offset=16 + local.tee $6 + 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 1836 i32.lt_s - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 16 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|1 + i32.store local.get $1 - i32.const 100 - i32.lt_s + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 268435455 + i32.gt_u if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 2 + i32.shl + local.tee $9 i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $6 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 2 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $8 - call $~lib/memory/memory.fill - local.get $1 - local.get $4 - call $~lib/set/Set#set:buckets - local.get $1 - local.get $4 - i32.store offset=4 - local.get $1 - local.get $8 - i32.store offset=8 - local.get $1 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - loop $for-loop|01 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $9 + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + local.get $9 + i32.store offset=8 + local.get $1 + local.get $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $5 - local.get $6 - i32.lt_s - if - local.get $10 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + local.get $1 + i32.store + loop $for-loop|01 + local.get $6 + local.get $7 + i32.gt_s + if + local.get $11 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $0 + local.get $4 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|01 + end + end + local.get $1 + local.get $0 + i32.const 2 + call $~lib/array/ensureSize + local.get $1 + 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 $10 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=8 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.load offset=12 + i32.lt_s if local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - local.get $4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.set $0 + local.get $2 i32.load - call $~lib/array/Array#__set + local.get $2 + i32.load offset=4 local.get $0 - i32.const 1 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add + i32.load local.set $0 + block $__inlined_func$~lib/set/Set#find11 + loop $while-continue|012 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $6 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $5 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find11 + local.get $6 + i32.const -2 + i32.and + local.set $0 + br $while-continue|012 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|01 end - end - local.get $1 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|2 - local.get $3 - local.get $1 - i32.load offset=12 - i32.lt_s + local.get $4 + i32.load offset=20 + local.get $2 + i32.load offset=20 + i32.ne if - local.get $2 - local.get $1 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|3 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find14 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#delete + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find17 + loop $while-continue|018 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find17 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|018 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|3 + end end - end - local.get $4 - i32.load offset=20 - local.get $2 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 + local.get $2 + i32.load offset=20 i32.const 50 - i32.lt_s + i32.ne if - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|4 - local.get $3 - i32.const 50 - i32.lt_s - if - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#add - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 + local.set $3 + loop $for-loop|4 local.get $3 - call $~lib/set/Set#has + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 - end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 49 - 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 $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add i32.load - i32.eq - end - if + local.set $0 + block $__inlined_func$~lib/set/Set#find20 + loop $while-continue|021 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find20 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|021 + end + end + i32.const 0 + local.set $0 + end local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 3 - i32.shl - 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 3 - i32.shl - 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=4 - i32.const 1 - i32.and - i32.eqz - if + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + call $~lib/set/Set#add local.get $2 - local.get $8 i32.load - local.tee $7 - i32.store local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH - local.get $1 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $7 i32.load - i32.store offset=4 - local.get $7 + local.set $0 + block $__inlined_func$~lib/set/Set#find23 + loop $while-continue|024 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find23 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|024 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.store + local.get $3 + call $~lib/set/Set#delete local.get $2 - i32.const 8 + i32.load + local.get $2 + i32.load offset=4 + local.get $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - local.set $2 - end - local.get $8 - i32.const 8 - i32.add - local.set $8 - br $while-continue|0 - end - end - local.get $0 - local.get $6 - call $~lib/set/Set#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/set/Set#set:entries - 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/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - i32.load offset=4 - else + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - i32.load offset=4 - i32.const 1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find26 + loop $while-continue|027 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find26 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|027 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 1 - i32.or + i32.add + local.set $3 + br $for-loop|4 end - call $~lib/set/Set#rehash end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store - local.get $0 - local.get $0 + local.get $2 i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 + call $~lib/set/Set#clear local.get $2 - i32.store + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + 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 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.load local.get $0 i32.load offset=4 local.get $1 + 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 $1 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and i32.const 2 i32.shl i32.add i32.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else + local.set $0 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end i32.const 0 + local.set $0 end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end + local.get $0 + i32.const 0 + i32.ne ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) + (local $6 i64) (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 100 - i32.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne + i32.const 1836 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $6 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.tee $2 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 + local.get $2 local.get $1 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 + i32.const 1 + i32.add + local.tee $2 i32.const 2 i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $8 - call $~lib/memory/memory.fill - local.get $1 - local.get $4 - call $~lib/set/Set#set:buckets - local.get $1 - local.get $4 - i32.store offset=4 - local.get $1 - local.get $8 - i32.store offset=8 - local.get $1 - local.get $7 - i32.store offset=12 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $7 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 4 + i32.shl + 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 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - loop $for-loop|01 - local.get $5 - local.get $6 - i32.lt_s + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - local.get $10 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 + local.get $8 + i32.load offset=8 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 $7 local.get $1 - local.get $0 - local.get $4 + 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 - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + i32.store offset=8 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 i32.add - local.set $0 + local.set $2 end - local.get $5 - i32.const 1 + local.get $8 + i32.const 16 i32.add - local.set $5 - br $for-loop|01 + 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 - call $~lib/array/Array#set:length + 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 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|2 - local.get $3 - local.get $1 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $4 - i32.load offset=20 + 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 $1 + 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 $2 local.get $2 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 50 - i32.lt_u - if - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|4 - local.get $3 - i32.const 50 - i32.lt_u - if - local.get $2 - local.get $3 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#add - local.get $2 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - call $~lib/set/Set#delete + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 local.get $2 - local.get $3 - call $~lib/set/Set#has if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 end + i32.const 0 + local.set $2 end local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $2 + local.get $1 + i64.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 1568 - i32.const 45 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/array/ensureSize + 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 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 + i64.store + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i64.load ) - (func $~lib/util/hash/HASH (param $0 i64) (result i32) - (local $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load local.get $0 + i32.load offset=4 + local.get $1 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -6943,7 +11837,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $0 + local.get $1 i64.const 32 i64.shr_u i32.wrap_i64 @@ -6954,1634 +11848,1983 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/set/Set#rehash + end + ) + (func $~lib/set/Set#clear (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 + i32.store + local.get $0 local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul + call $~lib/rt/itcms/__link + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 + i32.store offset=8 + local.get $0 local.get $1 - i32.const 16 - i32.shr_u - i32.xor - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + call $~lib/rt/itcms/__link local.get $0 - i32.load - local.get $2 + i32.const 4 + i32.store offset=12 local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + i32.store offset=16 local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find i32.const 0 - i32.ne + i32.store offset=20 ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 4 - i32.shl - 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 4 - i32.shl - i32.add - local.set $6 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + call $~lib/set/Set#constructor + local.tee $2 + i32.store + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_s + if + local.get $2 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#add + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|0 + end + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_s + if + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#add + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|1 + end + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $11 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $12 + local.get $2 + i32.load offset=16 + local.tee $8 + local.set $9 + local.get $7 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 16 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=12 + local.get $8 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.const 3 + i32.shl + local.tee $10 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $10 + call $~lib/memory/memory.fill + local.get $3 + local.get $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $10 + i32.store offset=8 + local.get $3 local.get $9 - i32.ne - if - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $3 + i32.store + loop $for-loop|01 + local.get $6 + local.get $8 + i32.lt_s if - local.get $2 - local.get $9 - i64.load - local.tee $5 - i64.store - local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH - local.get $1 - i32.and - i32.const 2 + local.get $12 + local.get $6 + i32.const 4 i32.shl i32.add local.tee $4 - i32.load - i32.store offset=8 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 16 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $0 + local.get $4 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 i32.add - local.set $2 + local.set $6 + br $for-loop|01 end - local.get $9 - i32.const 16 - i32.add - local.set $9 - br $while-continue|0 end - end - local.get $0 - local.get $8 - call $~lib/set/Set#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/set/Set#set:entries - 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/set/Set#add (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if + local.get $3 local.get $0 - i32.load offset=16 + i32.const 3 + call $~lib/array/ensureSize + local.get $3 local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - 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 $11 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=8 + loop $for-loop|2 + local.get $5 + local.get $3 i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl + if + local.get $2 + local.get $3 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $3 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $5 i32.const 1 - i32.or + i32.add + local.set $5 + br $for-loop|2 end - call $~lib/set/Set#rehash end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 local.get $4 - i32.const 4 - i32.shl - i32.add - local.tee $2 - local.get $1 - i64.store - local.get $0 - local.get $0 i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_s + if + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#delete + local.get $2 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|3 + end + end local.get $2 - i32.store - end - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_s + if + local.get $2 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#add + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#delete + local.get $2 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|4 + end + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne if - i32.const 1248 - i32.const 1616 - i32.const 108 - i32.const 22 + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 + local.get $2 + call $~lib/set/Set#clear + local.get $2 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.tee $3 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 + global.set $~lib/memory/__stack_pointer + return 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/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.load local.get $0 i32.load offset=4 local.get $1 - i32.const 3 - i32.shl + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - i64.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find + 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 $2 - i32.eqz - if - return - end local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 + i32.const 15 i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 + i32.xor + i32.const -2048144777 + i32.mul local.tee $2 local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end - ) - (func $~lib/set/Set#clear (param $0 i32) - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul local.tee $2 - i32.store - loop $for-loop|0 - local.get $1 - i64.const 100 - i64.lt_s - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|0 - end - end local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - i64.const 100 - i64.lt_s - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $0 if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $7 - local.set $8 + i32.ne + ) + (func $~lib/set/Set#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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 134217727 - i32.gt_u + i32.const 1836 + i32.lt_s if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + 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 - local.tee $9 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $9 - call $~lib/memory/memory.fill - local.get $3 - local.get $4 - call $~lib/set/Set#set:buckets - local.get $3 - local.get $4 + i32.const 3 + i32.div_s + local.tee $5 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 i32.store offset=4 - local.get $3 - local.get $9 - i32.store offset=8 - local.get $3 - local.get $8 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.set $4 local.get $3 - i32.store - loop $for-loop|01 - local.get $6 - local.get $7 - i32.lt_s + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - local.get $11 - local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $4 + local.get $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 - local.get $0 - local.get $4 + local.get $2 + local.get $8 i64.load - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + local.tee $6 + i64.store + 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 - local.set $0 + 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=8 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 end - local.get $6 - i32.const 1 + local.get $8 + i32.const 16 i32.add - local.set $6 - br $for-loop|01 + 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/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load + local.get $1 + 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 $1 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|2 - local.get $5 - local.get $3 - i32.load offset=12 - i32.lt_s - if + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 local.get $2 - local.get $3 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 end - local.get $4 - local.get $3 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|2 end + i32.const 0 + local.set $2 end - local.get $4 - i32.load offset=20 local.get $2 - i32.load offset=20 - i32.ne + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_s + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#delete - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 + call $~lib/set/Set#rehash end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $2 + local.get $1 + i64.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_s - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#delete + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + 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 $1 + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 local.get $2 - local.get $1 - call $~lib/set/Set#has if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 end + i32.const 0 + local.set $2 end local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end local.get $2 - call $~lib/set/Set#clear local.get $2 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 49 - 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 $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 local.get $0 - i32.load - local.get $2 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 local.get $0 i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 i32.add - i32.load - local.set $0 - loop $while-continue|0 + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/set/Set#rehash end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - i32.const 0 - i32.ne ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 4 - i32.shl - 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 4 - i32.shl - i32.add - local.set $6 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $9 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + call $~lib/set/Set#constructor + local.tee $2 + i32.store + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_u + if + local.get $2 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#add + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|0 + end + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_u + if + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#add + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|1 + end + end + local.get $2 + i32.load offset=20 + i32.const 100 i32.ne if - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $11 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $12 + local.get $2 + i32.load offset=16 + local.tee $8 + local.set $9 + local.get $7 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 16 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=12 + local.get $8 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.const 3 + i32.shl + local.tee $10 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $10 + call $~lib/memory/memory.fill + local.get $3 + local.get $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $10 + i32.store offset=8 + local.get $3 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $3 + i32.store + loop $for-loop|01 + local.get $6 + local.get $8 + i32.lt_s if - local.get $2 - local.get $9 - i64.load - local.tee $5 - i64.store - local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH - local.get $1 - i32.and - i32.const 2 + local.get $12 + local.get $6 + i32.const 4 i32.shl i32.add local.tee $4 - i32.load - i32.store offset=8 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 16 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $0 + local.get $4 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $6 + i32.const 1 i32.add - local.set $2 + local.set $6 + br $for-loop|01 end - local.get $9 - i32.const 16 - i32.add - local.set $9 - br $while-continue|0 end - end - local.get $0 - local.get $8 - call $~lib/set/Set#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/set/Set#set:entries - 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/set/Set#add (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if + local.get $3 local.get $0 - i32.load offset=16 + i32.const 3 + call $~lib/array/ensureSize + local.get $3 local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - 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 $11 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=8 + loop $for-loop|2 + local.get $5 + local.get $3 i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl + if + local.get $2 + local.get $3 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $3 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $5 i32.const 1 - i32.or + i32.add + local.set $5 + br $for-loop|2 end - call $~lib/set/Set#rehash end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 local.get $4 - i32.const 4 - i32.shl - i32.add - local.tee $2 - local.get $1 - i64.store - local.get $0 - local.get $0 i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_u + if + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#delete + local.get $2 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|3 + end + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_u + if + local.get $2 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#add + local.get $2 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/set/Set#delete + local.get $2 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|4 + end + end + local.get $2 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/set/Set#clear local.get $2 - i32.store - end - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + 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 - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 + i32.const 18240 + i32.const 18288 i32.const 1 - i32.shr_u - local.tee $3 i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end + call $~lib/builtins/abort + unreachable ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i64) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|0 - local.get $1 - i64.const 100 - i64.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - i64.const 100 - i64.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $7 - local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 18 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 134217727 - i32.gt_u + i32.const 1836 + i32.lt_s if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + 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 - local.tee $9 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $9 - call $~lib/memory/memory.fill - local.get $3 - local.get $4 - call $~lib/set/Set#set:buckets - local.get $3 - local.get $4 + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 i32.store offset=4 - local.get $3 - local.get $9 - i32.store offset=8 - local.get $3 - local.get $8 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.set $5 local.get $3 - i32.store - loop $for-loop|01 - local.get $6 - local.get $7 - i32.lt_s + local.set $2 + loop $while-continue|0 + local.get $5 + local.get $8 + i32.ne if - local.get $11 - local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $4 - i32.load offset=8 + local.get $8 + i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 - local.get $0 + local.get $2 + local.get $8 + f32.load + local.tee $4 + f32.store + local.get $2 + local.get $7 + local.get $1 local.get $4 - i64.load - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - local.set $0 + 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=4 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 end - local.get $6 - i32.const 1 + local.get $8 + i32.const 8 i32.add - local.set $6 - br $for-loop|01 + 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 $6 + i32.store offset=12 local.get $0 - call $~lib/array/Array#set:length + local.get $0 + i32.load offset=20 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=8 - loop $for-loop|2 - local.get $5 - local.get $3 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $3 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|2 - end - end - local.get $4 - i32.load offset=20 + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 local.get $2 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#delete - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 - end - end + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_u - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#delete + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 local.get $2 - local.get $1 - call $~lib/set/Set#has if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 end + i32.const 0 + local.set $2 end local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 45 + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.tee $2 + local.get $1 + f32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end - local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f32.load ) - (func $~lib/util/hash/HASH (param $0 f32) (result i32) - (local $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load local.get $0 + i32.load offset=4 + local.get $1 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -8591,833 +13834,1281 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f32.load - f32.eq - end + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 if - local.get $0 - return + local.get $2 + i32.load offset=4 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/set/Set#rehash end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - i32.const 0 - i32.ne ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 f32) (local $3 i32) (local $4 i32) - (local $5 f32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 3 - i32.shl - 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 3 - i32.shl - i32.add - local.set $6 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $9 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + 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 0 + i32.store offset=8 + local.get $0 + call $~lib/set/Set#constructor + local.tee $3 + i32.store + loop $for-loop|0 + local.get $2 + f32.const 100 + f32.lt + if + local.get $3 + i32.load + local.get $3 + i32.load offset=4 + local.get $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $5 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $2 + call $~lib/set/Set#add + local.get $3 + i32.load + local.get $3 + i32.load offset=4 + local.get $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find1 + loop $while-continue|02 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find1 + local.get $5 + i32.const -2 + i32.and + local.set $0 + br $while-continue|02 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + f32.const 1 + f32.add + local.set $2 + br $for-loop|0 + end + end + local.get $3 + i32.load offset=20 + i32.const 100 i32.ne if - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 50 + local.set $2 + loop $for-loop|1 + local.get $2 + f32.const 100 + f32.lt if + local.get $3 + i32.load + local.get $3 + i32.load offset=4 local.get $2 - local.get $9 - f32.load - local.tee $5 - f32.store - local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH - local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $4 i32.load - i32.store offset=4 - local.get $4 + local.set $0 + block $__inlined_func$~lib/set/Set#find4 + loop $while-continue|05 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find4 + local.get $5 + i32.const -2 + i32.and + local.set $0 + br $while-continue|05 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 local.get $2 - i32.store + call $~lib/set/Set#add + local.get $3 + i32.load + local.get $3 + i32.load offset=4 + local.get $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find7 + loop $while-continue|08 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find7 + local.get $5 + i32.const -2 + i32.and + local.set $0 + br $while-continue|08 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.const 8 - i32.add + f32.const 1 + f32.add local.set $2 + br $for-loop|1 end - local.get $9 - i32.const 8 - i32.add - local.set $9 - br $while-continue|0 end - end - local.get $0 - local.get $8 - call $~lib/set/Set#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/set/Set#set:entries - 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/set/Set#add (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + local.get $3 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 + i32.const 0 + i32.const 1568 + i32.const 18 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash + call $~lib/builtins/abort + unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer + local.tee $11 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 0 + i32.store + local.get $3 i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - f32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load + local.set $12 local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add + i32.load offset=16 + local.tee $8 + local.set $9 + local.get $5 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer local.tee $0 - i32.load - i32.store offset=4 + i64.const 0 + i64.store local.get $0 - local.get $2 + i32.const 16 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $4 i32.store - end - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else + local.get $4 i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 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) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt + i32.store + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 0 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.store offset=12 + local.get $8 + i32.const 268435455 + i32.gt_u if - local.get $2 - local.get $1 - call $~lib/set/Set#has + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.const 2 + i32.shl + local.tee $10 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $10 + call $~lib/memory/memory.fill + local.get $4 + local.get $0 + i32.store + local.get $4 + local.get $0 + call $~lib/rt/itcms/__link + local.get $4 + local.get $0 + i32.store offset=4 + local.get $4 + local.get $10 + i32.store offset=8 + local.get $4 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + i32.store + loop $for-loop|01 + local.get $7 + local.get $8 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $12 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $5 + f32.load + local.set $2 + local.get $0 + local.get $4 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $0 + i32.const 1 + i32.add + local.tee $5 + i32.const 2 + call $~lib/array/ensureSize + local.get $4 + local.get $5 + i32.store offset=12 + end + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|01 end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + end + local.get $4 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|2 + local.get $6 + local.get $4 + i32.load offset=12 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $6 + call $~lib/array/Array#__get + local.tee $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.set $0 + local.get $3 + i32.load + local.get $3 + i32.load offset=4 + local.get $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find11 + loop $while-continue|012 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find11 + local.get $5 + i32.const -2 + i32.and + local.set $0 + br $while-continue|012 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $4 + local.get $6 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|2 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|0 end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 50 - local.set $1 - loop $for-loop|1 local.get $1 - f32.const 100 - f32.lt + i32.load offset=20 + local.get $3 + i32.load offset=20 + i32.ne if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $2 + loop $for-loop|3 local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + f32.const 50 + f32.lt if - i32.const 0 - i32.const 1568 + local.get $3 + i32.load + local.get $3 + i32.load offset=4 + local.get $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find14 + loop $while-continue|015 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find14 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|015 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $2 + call $~lib/set/Set#delete + local.get $3 + i32.load + local.get $3 + i32.load offset=4 + local.get $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find17 + loop $while-continue|018 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find17 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|018 + end + end + i32.const 0 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + f32.const 1 + f32.add + local.set $2 + br $for-loop|3 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|1 end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $7 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 20 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.const 2 - i32.shl - local.tee $9 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $9 - call $~lib/memory/memory.fill - local.get $3 - local.get $4 - call $~lib/set/Set#set:buckets - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $9 - i32.store offset=8 - local.get $3 - local.get $8 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store - loop $for-loop|01 - local.get $6 - local.get $7 - i32.lt_s + local.get $3 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $11 - local.get $6 + i32.const 0 + i32.const 1568 + i32.const 35 i32.const 3 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $2 + loop $for-loop|4 + local.get $2 + f32.const 50 + f32.lt if - local.get $4 - f32.load - local.set $1 - local.get $0 local.get $3 - i32.load offset=12 - i32.ge_u + i32.load + local.get $3 + i32.load offset=4 + local.get $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find20 + loop $while-continue|021 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find20 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|021 + end + end + i32.const 0 + local.set $0 + end + local.get $0 if - local.get $0 i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $2 + call $~lib/set/Set#add + local.get $3 + i32.load + local.get $3 + i32.load offset=4 + local.get $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find23 + loop $while-continue|024 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find23 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|024 + end end - local.get $3 - local.get $0 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - call $~lib/array/ensureSize - local.get $3 - local.get $4 - i32.store offset=12 + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable end local.get $3 + local.get $2 + call $~lib/set/Set#delete + local.get $3 + i32.load + local.get $3 i32.load offset=4 + local.get $2 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + i32.and i32.const 2 i32.shl i32.add - local.get $1 - f32.store + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find26 + loop $while-continue|027 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $0 + f32.load + f32.eq + end + br_if $__inlined_func$~lib/set/Set#find26 + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|027 + end + end + i32.const 0 + local.set $0 + end local.get $0 - i32.const 1 - i32.add - local.set $0 + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + f32.const 1 + f32.add + local.set $2 + br $for-loop|4 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|01 end - end - local.get $3 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=8 - loop $for-loop|2 - local.get $5 local.get $3 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $3 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|2 - end - end - local.get $0 - i32.load offset=20 - local.get $2 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f32.const 50 - f32.lt + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#delete - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|3 + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f32.const 50 - f32.lt + local.get $3 + call $~lib/set/Set#clear + local.get $3 + i32.load offset=20 if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#delete - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|4 + i32.const 0 + i32.const 1568 + i32.const 49 + 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 - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 49 - 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 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/hash/HASH (param $0 f64) (result i32) - (local $1 i32) - (local $2 i64) + (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + (local $3 i64) + local.get $0 + i32.load local.get $0 + i32.load offset=4 + local.get $1 i64.reinterpret_f64 - local.tee $2 + local.tee $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -9427,7 +15118,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $2 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -9438,94 +15129,93 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load local.set $0 - loop $while-continue|0 - local.get $0 - if + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f64.load - f64.eq - end if local.get $0 - return + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f64.load + f64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + i32.const 0 + local.set $0 end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find i32.const 0 i32.ne ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 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 - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + 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 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const 1 i32.add @@ -9576,17 +15266,57 @@ f64.store local.get $2 local.get $8 - local.get $5 - call $~lib/util/hash/HASH 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 $4 + local.tee $10 i32.load i32.store offset=8 - local.get $4 + local.get $10 local.get $2 i32.store local.get $2 @@ -9603,13 +15333,19 @@ end local.get $0 local.get $8 - call $~lib/set/Set#set:buckets + 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 - call $~lib/set/Set#set:entries + 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 @@ -9625,13 +15361,90 @@ (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 i64) + (local $5 i32) local.get $0 + i32.load local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/set/Set#find + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + local.tee $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + f64.load + f64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 i32.eqz if local.get $0 @@ -9668,11 +15481,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $2 i32.const 4 i32.shl i32.add @@ -9688,7 +15501,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -9727,12 +15540,88 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) + (local $4 i64) local.get $0 + i32.load + local.get $0 + i32.load offset=4 local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find + 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 $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + local.get $2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + local.get $2 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find + loop $while-continue|0 + local.get $2 + if + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $2 + f64.load + f64.eq + end + br_if $__inlined_func$~lib/set/Set#find + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $2 + end + local.get $2 i32.eqz if return @@ -9786,7 +15675,7 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 f64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9797,467 +15686,500 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 f64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $2 - i32.store - loop $for-loop|0 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + 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 + call $~lib/set/Set#constructor + local.tee $11 + i32.store + loop $for-loop|0 + local.get $12 + f64.const 100 + f64.lt + if + local.get $11 + local.get $12 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $12 + call $~lib/set/Set#add + local.get $11 + local.get $12 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $12 + f64.const 1 + f64.add + local.set $12 + br $for-loop|0 + end + end + local.get $11 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 50 + local.set $12 + loop $for-loop|1 + local.get $12 + f64.const 100 + f64.lt + if + local.get $11 + local.get $12 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $12 + call $~lib/set/Set#add + local.get $11 + local.get $12 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $12 + f64.const 1 + f64.add + local.set $12 + br $for-loop|1 + end + end + local.get $11 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $9 + i32.const 0 + i32.store + local.get $11 + i32.load offset=8 + local.set $2 + local.get $11 + i32.load offset=16 + local.tee $6 + local.set $5 + local.get $9 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 - f64.const 100 - f64.lt + i32.const 16 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store + local.get $10 + i32.const 0 + i32.store + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $10 + i32.const 0 + i32.store offset=4 + local.get $10 + i32.const 0 + i32.store offset=8 + local.get $10 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 134217727 + i32.gt_u if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|0 + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 50 - local.set $1 - loop $for-loop|1 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 local.get $1 - f64.const 100 - f64.lt - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + local.get $4 + call $~lib/memory/memory.fill + local.get $10 + local.get $1 + i32.store + local.get $10 + local.get $1 + call $~lib/rt/itcms/__link + local.get $10 + local.get $1 + i32.store offset=4 + local.get $10 + local.get $4 + i32.store offset=8 + local.get $10 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + local.get $10 + i32.store + loop $for-loop|01 + local.get $6 + local.get $7 + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $7 + i32.const 4 + i32.shl + i32.add + local.tee $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $1 + i32.const 1 + i32.add + local.set $0 + local.get $9 + f64.load + local.set $12 + local.get $1 + local.get $10 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $10 + local.get $1 + i32.const 1 + i32.add + local.tee $9 + i32.const 3 + call $~lib/array/ensureSize + local.get $10 + local.get $9 + i32.store offset=12 + end + local.get $10 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $12 + f64.store + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|01 end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|1 end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 + local.get $10 + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i32.load offset=8 - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $7 - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - call $~lib/set/Set#set:buckets - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 134217727 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 58 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.const 3 - i32.shl - local.tee $9 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $9 - call $~lib/memory/memory.fill - local.get $3 - local.get $4 - call $~lib/set/Set#set:buckets - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $9 - i32.store offset=8 - local.get $3 - local.get $8 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store - loop $for-loop|01 - local.get $6 - local.get $7 - i32.lt_s - if - local.get $11 - local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + call $~lib/array/ensureSize + local.get $10 + 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 $3 + local.get $10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|2 + local.get $8 + local.get $10 + i32.load offset=12 + i32.lt_s if - local.get $4 - f64.load - local.set $1 - local.get $0 - local.get $3 - i32.load offset=12 - i32.ge_u + local.get $11 + local.get $10 + local.get $8 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz if - local.get $0 i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 108 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - call $~lib/array/ensureSize - local.get $3 - local.get $4 - i32.store offset=12 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.load offset=4 - local.get $0 - i32.const 3 - i32.shl - i32.add local.get $1 - f64.store - local.get $0 + local.get $10 + local.get $8 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $8 i32.const 1 i32.add - local.set $0 + local.set $8 + br $for-loop|2 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|01 end - end - local.get $3 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=8 - loop $for-loop|2 - local.get $5 - local.get $3 - i32.load offset=12 - i32.lt_s + local.get $1 + i32.load offset=20 + local.get $11 + i32.load offset=20 + i32.ne if - local.get $2 - local.get $3 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $12 + loop $for-loop|3 + local.get $12 + f64.const 50 + f64.lt if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $11 + local.get $12 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $12 + call $~lib/set/Set#delete + local.get $11 + local.get $12 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $12 + f64.const 1 + f64.add + local.set $12 + br $for-loop|3 end - local.get $0 - local.get $3 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|2 end - end - local.get $0 - i32.load offset=20 - local.get $2 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f64.const 50 - f64.lt + local.get $11 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#delete - local.get $2 - local.get $1 - call $~lib/set/Set#has + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $12 + loop $for-loop|4 + local.get $12 + f64.const 50 + f64.lt if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $11 + local.get $12 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $12 + call $~lib/set/Set#add + local.get $11 + local.get $12 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $12 + call $~lib/set/Set#delete + local.get $11 + local.get $12 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $12 + f64.const 1 + f64.add + local.set $12 + br $for-loop|4 end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|3 end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f64.const 50 - f64.lt + local.get $11 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/set/Set#delete - local.get $2 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|4 + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $11 + call $~lib/set/Set#clear + local.get $11 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + 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 - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 49 - 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 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner1 @@ -10308,14 +16230,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store i32.const 1168 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store i32.const 1200 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store i32.const 1344 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace call $std/set/testNumeric call $std/set/testNumeric @@ -10361,26 +16298,23 @@ i32.add global.set $~lib/rt/itcms/threshold ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1836 - i32.lt_s - if - i32.const 18240 - i32.const 18288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -10412,15 +16346,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 3 call $~lib/rt/itcms/__new @@ -10429,14 +16375,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10454,15 +16408,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 5 call $~lib/rt/itcms/__new @@ -10471,14 +16437,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10496,15 +16470,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 7 call $~lib/rt/itcms/__new @@ -10513,14 +16499,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10538,15 +16532,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 9 call $~lib/rt/itcms/__new @@ -10555,14 +16561,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10580,15 +16594,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 11 call $~lib/rt/itcms/__new @@ -10597,14 +16623,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10622,15 +16656,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 13 call $~lib/rt/itcms/__new @@ -10639,14 +16685,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10664,15 +16718,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 15 call $~lib/rt/itcms/__new @@ -10681,14 +16747,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10706,15 +16780,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 17 call $~lib/rt/itcms/__new @@ -10723,14 +16809,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10748,15 +16842,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 19 call $~lib/rt/itcms/__new @@ -10765,14 +16871,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 @@ -10790,15 +16904,27 @@ ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 24 i32.const 21 call $~lib/rt/itcms/__new @@ -10807,14 +16933,22 @@ local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:buckets + local.tee $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/set/Set#set:entries + local.tee $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link local.get $0 i32.const 4 i32.store offset=12 diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index f788031ed0..81deaabeb9 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1,12 +1,12 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 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 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_i64 (func (param i32) (result i64))) (type $i32_=>_f32 (func (param i32) (result f32))) (type $i32_=>_f64 (func (param i32) (result f64))) @@ -81,15 +81,6 @@ i32.add i32.load ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -145,49 +136,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -212,7 +164,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -235,7 +187,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -245,15 +197,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -289,7 +246,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -596,12 +575,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -955,7 +934,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1018,7 +1002,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1098,7 +1087,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18396 i32.ge_u if @@ -1108,19 +1097,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1137,11 +1126,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1143,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1175,28 +1169,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1293,268 +1287,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1632 - i32.const 1904 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1652,6 +1447,10 @@ ) (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 @@ -1669,12 +1468,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1690,13 +1489,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1710,214 +1510,1011 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $2 - call $~lib/rt/tlsf/allocateBlock + local.get $6 + i32.const 1073741820 + i32.ge_u + if + i32.const 1632 + i32.const 1904 + i32.const 458 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/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 $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and + 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 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 i32.add - i64.load - i64.store + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end ) (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (local $2 i32) @@ -1926,9 +2523,11 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $0 i32.load offset=8 - local.tee $5 + local.tee $8 local.get $1 i32.shr_u i32.const 1 @@ -1947,20 +2546,19 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - local.tee $6 - local.set $2 block $__inlined_func$~lib/rt/itcms/__renew i32.const 1 local.get $1 i32.shl local.tee $7 - local.tee $3 - local.get $6 + local.tee $2 + local.get $0 + i32.load + local.tee $6 + local.tee $1 i32.const 20 i32.sub - local.tee $4 + local.tee $3 i32.load i32.const -4 i32.and @@ -1968,34 +2566,219 @@ i32.sub i32.le_u if - local.get $4 local.get $3 - i32.store offset=16 local.get $2 - local.set $1 + i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end + local.get $2 local.get $3 - local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 + local.set $4 local.get $2 local.get $3 - local.get $4 i32.load offset=16 - local.tee $2 + local.tee $3 local.get $2 local.get $3 - i32.gt_u + i32.lt_u select - call $~lib/memory/memory.copy + local.set $9 + 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 $9 + i32.sub + i32.const 0 + local.get $9 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $4 + local.get $1 + local.get $9 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 + local.get $4 + i32.gt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $4 + i32.const 7 + i32.and + if + local.get $9 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + 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 $9 + i32.const 8 + i32.ge_u + if + local.get $4 + local.get $1 + i64.load + i64.store + local.get $9 + i32.const 8 + i32.sub + local.set $9 + 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 $9 + if + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + 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 $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $4 + local.get $9 + i32.add + i32.const 7 + i32.and + if + local.get $9 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.get $9 + i32.const 1 + i32.sub + local.tee $9 + i32.add + local.get $1 + local.get $9 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $9 + i32.const 8 + i32.ge_u + if + local.get $4 + local.get $9 + i32.const 8 + i32.sub + local.tee $9 + i32.add + local.get $1 + local.get $9 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $9 + if + local.get $4 + local.get $9 + i32.const 1 + i32.sub + local.tee $9 + i32.add + local.get $1 + local.get $9 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + local.get $5 + local.set $1 end local.get $1 - local.get $5 + local.get $8 i32.add local.get $7 - local.get $5 + local.get $8 i32.sub call $~lib/memory/memory.fill local.get $1 @@ -2036,9 +2819,7 @@ i32.load offset=4 i32.const 3 i32.and - local.tee $2 - local.set $3 - local.get $2 + local.tee $4 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -2050,7 +2831,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $3 + local.get $4 i32.const 3 i32.eq select @@ -2165,6 +2946,7 @@ call $start:std/static-array ) (func $start:std/static-array + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2181,9 +2963,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1088 i32.store i32.const 1100 @@ -2236,14 +3019,29 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1748 + i32.const 1744 + i32.store + i32.const 1752 + i32.const 1744 + i32.store i32.const 1744 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1780 + i32.const 1776 + i32.store + i32.const 1784 + i32.const 1776 + i32.store i32.const 1776 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1860 + i32.const 1856 + i32.store + i32.const 1864 + i32.const 1856 + i32.store i32.const 1856 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1088 diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index a7ca0ec334..93b7567209 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -1,13 +1,13 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 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_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (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 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -113,7 +113,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19572)) (export "memory" (memory $0)) (start $~start) @@ -162,15 +161,6 @@ local.get $1 i32.store offset=4 ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -236,49 +226,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -303,7 +254,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -326,7 +277,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -336,15 +287,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -380,7 +336,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -687,12 +665,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1046,7 +1024,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1109,7 +1092,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1189,7 +1177,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 19572 i32.ge_u if @@ -1199,19 +1187,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1228,11 +1216,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1242,10 +1233,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1266,28 +1259,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1384,268 +1377,69 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1344 - i32.const 1616 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 1 - i32.const 27 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + local.get $0 i32.sub + i32.const 3 + i32.and + local.tee $2 i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 + i32.sub + i32.const -4 i32.and local.tee $2 i32.add @@ -1743,6 +1537,10 @@ ) (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 @@ -1760,12 +1558,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1781,13 +1579,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1801,2499 +1600,3899 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $2 - call $~lib/rt/tlsf/allocateBlock + local.get $6 + i32.const 1073741820 + i32.ge_u + if + i32.const 1344 + i32.const 1616 + i32.const 458 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/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 $0 - local.get $1 + 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 - 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 + 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 $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq + 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 - 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 + unreachable end end - end - ) - (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/rt/itcms/__new - local.set $1 - local.get $2 - if - local.get $1 local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1408 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort + 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 - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 + 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 - i32.eq if - local.get $0 - i32.const 20 + 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 - local.tee $0 - i32.load offset=4 - i32.const 3 + 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.set $4 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add local.get $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - 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 $1 - call $~lib/rt/itcms/Object#makeGray - end - end + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store end - ) - (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) + 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.const 2 - i32.shl + 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 - local.get $2 - i32.store + i32.add + global.set $~lib/rt/itcms/total + local.get $6 + i32.const 20 + i32.add + local.tee $1 local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/memory/memory.fill + local.get $1 ) - (func $~lib/string/String.__eq (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.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - 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 $5 i32) + loop $while-continue|0 local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - i32.eqz i32.const 0 local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u select 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 - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 - i32.sub + i32.add local.set $0 - local.get $2 - if - local.get $3 - i32.load16_u - local.tee $2 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - 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 - i32.const 0 - end - i32.eqz - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf - local.get $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + local.tee $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $2 - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 + local.set $1 local.get $3 - i32.add - local.tee $2 - i32.const 0 + local.get $4 + i32.load8_u + i32.store8 local.get $2 - i32.const 0 - i32.gt_s - select + i32.const 1 + i32.sub local.set $2 + br $while-continue|0 end - loop $while-continue|0 + end + local.get $0 + i32.const 3 + i32.and + i32.eqz + if + loop $while-continue|1 local.get $2 - local.get $3 - i32.lt_s + i32.const 16 + i32.ge_u if - global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add + local.get $1 i32.load - local.tee $4 i32.store - local.get $4 + local.get $0 local.get $1 - call $~lib/string/String.__eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf - end - local.get $2 - i32.const 1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub local.set $2 - br $while-continue|0 + br $while-continue|1 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/staticarray/StaticArray#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - loop $while-continue|0 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end local.get $2 - local.get $3 - i32.lt_s + i32.const 4 + i32.and if + local.get $0 + local.get $1 + i32.load + i32.store local.get $1 + i32.const 4 + i32.add + local.set $1 local.get $0 - local.get $2 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 i32.const 2 - i32.shl i32.add - i32.load - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 + local.set $1 + local.get $0 + i32.const 2 i32.add - local.set $2 - br $while-continue|0 + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 end + return end - i32.const -1 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + 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 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - i32.shr_u + i32.add + local.tee $0 + local.get $1 i32.const 1 - i32.shl - local.tee $4 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 - 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 $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2720 - local.set $0 - br $__inlined_func$~lib/string/String#concat - end - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 i32.const 1 - call $~lib/rt/itcms/__new + i32.add local.tee $0 - i32.store + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $2 - local.get $3 - call $~lib/memory/memory.copy + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $3 + i32.const 1 i32.add + local.tee $0 local.get $1 - local.get $4 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $3 - i32.eqz - if - i32.const -1 - return - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_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 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=12 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/array/Array<~lib/string/String> - block $std/staticarray/Ref - block $~lib/staticarray/StaticArray - 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 $~lib/staticarray/StaticArray $std/staticarray/Ref $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $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 - return - end - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - end - local.get $0 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 1 i32.add - local.set $1 - loop $while-continue|00 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|00 - end - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:std/staticarray - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 3188 - i32.lt_s - if - i32.const 19600 - i32.const 19648 + local.tee $0 + local.get $1 i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $3 - 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 $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.load + i32.const 1 + i32.add local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.const 2720 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - select - return - end - i32.const 2720 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2720 - i32.store offset=4 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.gt_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 $5 - i32.store - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $5 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - local.get $0 - if - global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.add + local.tee $0 local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - call $~lib/string/String.__concat + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add local.tee $1 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $start:std/staticarray - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f32) - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 5 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1052 - i32.load - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 6 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 4 - call $~lib/staticarray/StaticArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 8 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1048 - i32.load - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 9 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - global.get $~lib/memory/__stack_pointer - i32.const 1280 - i32.store - i32.const 1280 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 - i32.ne + local.get $2 + i32.const 8 + i32.and if - i32.const 0 - i32.const 1216 - i32.const 13 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1280 - i32.store - i32.const 1276 - i32.load - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 14 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1280 - i32.store - i32.const 1280 - i32.const 4 - call $~lib/staticarray/StaticArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 1280 - i32.store - i32.const 1280 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 16 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 19572 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1456 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1488 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1568 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 12 - i32.const 3 - i32.const 1312 - call $~lib/rt/__newBuffer - global.set $std/staticarray/arr3 - global.get $~lib/memory/__stack_pointer - global.get $std/staticarray/arr3 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/staticarray/StaticArray#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 23 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/staticarray/arr3 - local.tee $1 - i32.store - local.get $1 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 24 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/staticarray/arr3 - local.tee $1 - i32.store - local.get $1 - i32.const 2 - call $~lib/staticarray/StaticArray#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 25 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/staticarray/arr3 - local.tee $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 26 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/staticarray/arr3 - local.tee $1 - i32.store - local.get $1 - i32.const 8 - call $~lib/staticarray/StaticArray#__set - global.get $~lib/memory/__stack_pointer - global.get $std/staticarray/arr3 - local.tee $1 - i32.store - local.get $1 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 28 + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 3 - i32.const 1312 - call $~lib/rt/__newBuffer - global.set $std/staticarray/arr3 - global.get $~lib/memory/__stack_pointer - global.get $std/staticarray/arr3 - local.tee $1 - i32.store - local.get $1 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 30 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 5 - i32.const 0 - call $~lib/rt/__newBuffer - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $std/staticarray/Ref#constructor - call $~lib/staticarray/StaticArray#__uset - local.get $1 - i32.const 1 - call $std/staticarray/Ref#constructor - call $~lib/staticarray/StaticArray#__uset - local.get $1 - global.set $std/staticarray/arr4 - i32.const 0 - global.set $std/staticarray/arr3 - i32.const 0 - global.set $std/staticarray/arr4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 12 - call $~lib/memory/memory.fill - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne + i32.and if - i32.const 0 - i32.const 1216 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 local.get $0 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 i32.const 2 - i32.shr_u - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#__get - if - i32.const 0 - i32.const 1216 - i32.const 46 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - global.get $~lib/memory/__stack_pointer - i32.const 6 - i32.const 6 - i32.const 1728 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/staticarray/StaticArray.fromArray - local.tee $2 - i32.store offset=4 - local.get $1 - i32.load offset=12 local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 2 - i32.shr_u - i32.ne + i32.and if - i32.const 0 - i32.const 1216 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - i32.const 0 - local.set $0 - loop $for-loop|1 + local.get $2 + i32.const 1 + i32.and + if local.get $0 local.get $1 - i32.load offset=12 - i32.lt_s + i32.load8_u + 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 $2 - local.get $0 - call $~lib/staticarray/StaticArray#__get local.get $0 local.get $1 - i32.load offset=12 - i32.ge_u + 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 - i32.const 1088 - i32.const 1776 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable + 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.load offset=4 + i32.const 7 + i32.and local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.ne + i32.const 7 + i32.and + i32.eq if - i32.const 0 - i32.const 1216 - i32.const 58 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 - 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 0 - i32.const 6 - i32.const 1824 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/staticarray/StaticArray.fromArray - local.tee $0 - i32.store offset=4 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + i32.eqz if i32.const 0 - i32.const 1216 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort + i32.const 1408 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - i32.const 1856 - call $~lib/rt/__newBuffer - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 3 - i32.const 1888 - call $~lib/rt/__newBuffer - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray.concat - local.tee $1 - i32.store offset=8 + global.get $~lib/rt/itcms/white local.get $1 i32.const 20 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + local.tee $1 + i32.load offset=4 i32.const 3 - i32.ne + i32.and + i32.eq if - i32.const 0 - i32.const 1216 - i32.const 69 + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $3 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 - i32.const 1920 - call $~lib/rt/__newBuffer - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 + ) + (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 - call $~lib/staticarray/StaticArray.concat - local.tee $1 - i32.store offset=8 + i32.eq + if + i32.const 1 + return + end local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + i32.eqz + i32.const 1 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ne + select if i32.const 0 - i32.const 1216 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 8 - i32.const 2128 - call $~lib/rt/__newBuffer - local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - i32.const 2147483647 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 - i32.store offset=4 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 2 + i32.const 1 i32.shr_u + local.tee $4 local.get $1 i32.const 20 i32.sub i32.load offset=16 - i32.const 2 + i32.const 1 i32.shr_u i32.ne if i32.const 0 - i32.const 1216 - i32.const 78 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - i32.const 0 - local.set $0 - loop $for-loop|2 + block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 + local.set $2 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store + local.set $3 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) local.get $2 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + i32.const 7 + i32.and local.get $3 - local.get $4 - call $~lib/string/String.__eq + i32.const 7 + i32.and + i32.or i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 81 - i32.const 5 - call $~lib/builtins/abort - unreachable + else + i32.const 0 + end + if + loop $do-continue|0 + local.get $2 + i64.load + local.get $3 + 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 $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end end + end + loop $while-continue|1 local.get $0 + local.tee $1 i32.const 1 - i32.add + i32.sub local.set $0 - br $for-loop|2 + local.get $1 + if + local.get $2 + i32.load16_u + local.tee $1 + local.get $3 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $1 + 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 + br $while-continue|1 + end end + i32.const 0 end + i32.eqz + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 3 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 + i32.const 4 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.const 2 - i32.ne + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3188 + i32.lt_s if - i32.const 0 - i32.const 1216 - i32.const 85 - i32.const 3 + i32.const 19600 + i32.const 19648 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1984 - i32.store offset=12 - local.get $2 - i32.const 1984 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 86 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2016 - i32.store offset=12 - local.get $0 - i32.const 2016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 87 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 2147483647 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ne - if + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $2 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf + end + local.get $2 i32.const 0 - i32.const 1216 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + 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 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 0 - i32.const 50 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 93 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 100 - i32.const 2147483647 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - if - i32.const 0 - i32.const 1216 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const -1 - i32.const 2147483647 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 + 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.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $7 local.get $0 + i32.load offset=12 + local.set $5 i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2080 - i32.store offset=12 - local.get $0 - i32.const 2080 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const -2 - i32.const -2 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 + i32.const 12 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - if - i32.const 0 - i32.const 1216 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.const -2 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne + i32.const 3188 + i32.lt_s if - i32.const 0 - i32.const 1216 - i32.const 106 - i32.const 3 + i32.const 19600 + i32.const 19648 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 2016 - i32.store offset=12 - local.get $0 - i32.const 2016 - call $~lib/string/String.__eq - i32.eqz - if + 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.const 1216 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 8 - i32.const 2304 - call $~lib/rt/__newBuffer - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 9 - i32.const 2352 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $1 - i32.store offset=16 - local.get $1 - i32.load offset=12 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 9 - i32.const 2416 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $1 - i32.store offset=16 - local.get $1 - i32.load offset=12 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.const 1 - i32.add - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 119 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 8 - i32.const 2448 - call $~lib/rt/__newBuffer - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1984 - i32.store offset=12 - local.get $0 - i32.const 1984 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2384 - i32.store offset=12 - local.get $0 - i32.const 2384 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - if - i32.const 0 - i32.const 1216 - i32.const 127 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2080 - i32.store offset=12 - local.get $0 - i32.const 2080 - i32.const 5 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2080 - i32.store offset=12 - local.get $0 - i32.const 2080 - i32.const -1 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 10 - i32.const 2496 - call $~lib/rt/__newBuffer - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) - i32.const 0 - local.set $0 - i32.const 0 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 3 - i32.shr_u - local.tee $3 + 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 - i32.const 1 - local.get $3 - select - br_if $__inlined_func$~lib/staticarray/StaticArray#includes - drop - loop $while-continue|0 + 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 - i32.const 1 - i32.const 1 - local.get $1 - local.get $0 - i32.const 3 + global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $3 + i32.const 2 i32.shl i32.add - f64.load - local.tee $5 - local.get $5 - f64.ne - local.get $5 - f64.const nan:0x8000000000000 - f64.eq - select - br_if $__inlined_func$~lib/staticarray/StaticArray#includes - drop - local.get $0 + 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 $0 - br $while-continue|0 + local.set $3 + br $for-loop|0 end end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 131 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 11 - i32.const 2528 - call $~lib/rt/__newBuffer - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) - i32.const 0 - local.set $1 - i32.const 0 + 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 2 + i32.const 1 i32.shr_u - local.tee $2 - i32.eqz + local.tee $5 + i32.mul + i32.add i32.const 1 - local.get $2 - select - br_if $__inlined_func$~lib/staticarray/StaticArray#includes - drop - loop $while-continue|00 - local.get $1 - local.get $2 + 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 - i32.const 1 - i32.const 1 - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $3 i32.const 2 i32.shl i32.add - f32.load - local.tee $6 - local.get $6 - f32.ne - local.get $6 - f32.const nan:0x400000 - f32.eq - select - br_if $__inlined_func$~lib/staticarray/StaticArray#includes - drop - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|00 - end - end - i32.const 0 - end - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - i32.const 2560 - call $~lib/rt/__newBuffer - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/staticarray/StaticArray#indexOf - if - i32.const 0 - i32.const 1216 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 7 - i32.const 0 - call $~lib/staticarray/StaticArray#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 139 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - i32.const 9 - i32.const 2 - call $~lib/staticarray/StaticArray#indexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 140 - i32.const 3 - call $~lib/builtins/abort - unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/array/Array<~lib/string/String> + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + 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 $~lib/staticarray/StaticArray $std/staticarray/Ref $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $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 + return + end + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + end + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|00 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|00 + end + end + return end local.get $0 - i32.const 2 - i32.const -1 - call $~lib/staticarray/StaticArray#indexOf - i32.const -1 - i32.ne - if + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + call $start:std/staticarray + ) + (func $start:std/staticarray + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 f32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3188 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i64.const 0 + i64.store offset=16 + local.get $2 i32.const 0 - i32.const 1216 - i32.const 141 + i32.store offset=24 + local.get $2 + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + i32.const 2 + i32.shr_u i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -3 - call $~lib/staticarray/StaticArray#indexOf - if - i32.const 0 - i32.const 1216 - i32.const 142 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 4 + call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1048 + i32.load i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 9 - i32.const 2688 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2752 - i32.store offset=20 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 2752 - call $~lib/util/string/joinReferenceArray<~lib/string/String> - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2784 - i32.store offset=12 - local.get $1 - i32.const 2784 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 148 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1280 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1276 + i32.load + i32.const 2 + i32.shr_u i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2720 - i32.store offset=20 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 2720 - call $~lib/util/string/joinReferenceArray<~lib/string/String> - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2832 - i32.store offset=12 - local.get $1 - i32.const 2832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 149 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1280 + i32.const 4 + call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1280 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 19572 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1460 + i32.const 1456 + i32.store + i32.const 1464 + i32.const 1456 + i32.store + i32.const 1456 + global.set $~lib/rt/itcms/pinSpace + i32.const 1492 + i32.const 1488 + i32.store + i32.const 1496 + i32.const 1488 + i32.store + i32.const 1488 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + i32.const 12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2880 - i32.store offset=20 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 2880 - call $~lib/util/string/joinReferenceArray<~lib/string/String> - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2912 - i32.store offset=12 - local.get $1 - i32.const 2912 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 1312 + i32.const 12 + call $~lib/memory/memory.copy + local.get $2 + global.set $std/staticarray/arr3 + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $2 + i32.store + local.get $2 i32.const 0 - i32.const 1216 - i32.const 150 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2960 - i32.store offset=20 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 2960 - call $~lib/util/string/joinReferenceArray<~lib/string/String> - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2992 - i32.store offset=12 - local.get $1 - i32.const 2992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 151 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $2 + i32.store + local.get $2 + i32.const 8 + call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2752 - i32.store offset=20 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 2752 - call $~lib/util/string/joinReferenceArray<~lib/string/String> - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2752 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - i32.const 2752 - call $~lib/util/string/joinReferenceArray<~lib/string/String> - 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.get $0 - i32.store offset=12 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 1312 + i32.const 12 + call $~lib/memory/memory.copy + local.get $2 + global.set $std/staticarray/arr3 + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + call $std/staticarray/Ref#constructor + local.tee $1 + i32.store + local.get $2 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $2 + call $std/staticarray/Ref#constructor + local.tee $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $2 + global.set $std/staticarray/arr4 i32.const 0 - i32.const 1216 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - i32.const 3056 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=24 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 2 - call $~lib/array/Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if + global.set $std/staticarray/arr3 i32.const 0 - i32.const 1216 - i32.const 158 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 7 - call $~lib/array/Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if + global.set $std/staticarray/arr4 + 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 3188 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 - i32.const 1216 - i32.const 159 + i32.store + local.get $2 + i32.const 12 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/array/Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 12 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 2 - call $~lib/array/Array#lastIndexOf - if + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + local.get $2 + local.get $0 + call $~lib/staticarray/StaticArray#__get + if + i32.const 0 + i32.const 1216 + i32.const 46 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + i32.const 6 + i32.const 1728 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/staticarray/StaticArray.fromArray + local.tee $1 + i32.store offset=4 + local.get $2 + i32.load offset=12 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1216 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -2 - call $~lib/array/Array#lastIndexOf - if + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.load offset=12 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/staticarray/StaticArray#__get + local.get $0 + local.get $2 + i32.load offset=12 + i32.ge_u + if + i32.const 1088 + i32.const 1776 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 58 + 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 0 - i32.const 1216 - i32.const 162 + i32.const 6 + i32.const 1824 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/staticarray/StaticArray.fromArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + if + i32.const 0 + i32.const 1216 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 1856 + i32.const 8 + call $~lib/memory/memory.copy + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1888 + i32.const 4 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $2 + local.get $0 + call $~lib/staticarray/StaticArray.concat + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1920 + i32.const 0 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $2 + local.get $0 + call $~lib/staticarray/StaticArray.concat + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2128 + i32.const 20 + call $~lib/memory/memory.copy + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|2 + local.get $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + local.get $2 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $1 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $3 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 81 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 3 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $1 + i32.store + local.get $3 + i32.const 1984 + i32.store offset=12 + local.get $1 + i32.const 1984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 2016 + i32.store offset=12 + local.get $0 + i32.const 2016 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 2147483647 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 50 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 100 + i32.const 2147483647 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + if + i32.const 0 + i32.const 1216 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const -1 + i32.const 2147483647 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 2080 + i32.store offset=12 + local.get $0 + i32.const 2080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const -2 + i32.const -2 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + if + i32.const 0 + i32.const 1216 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const -2 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $2 + i32.store + local.get $0 + i32.const 2016 + i32.store offset=12 + local.get $2 + i32.const 2016 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2304 + i32.const 20 + call $~lib/memory/memory.copy + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 9 + i32.const 2352 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $2 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat + local.tee $0 + i32.store offset=16 + local.get $0 + i32.load offset=12 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 9 + i32.const 2416 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $2 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat + local.tee $0 + i32.store offset=16 + local.get $0 + i32.load offset=12 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.add + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2448 + i32.const 20 + call $~lib/memory/memory.copy + local.get $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1984 + i32.store offset=12 + local.get $2 + i32.const 1984 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=12 + local.get $2 + i32.const 2384 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + if + i32.const 0 + i32.const 1216 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2080 + i32.store offset=12 + local.get $2 + i32.const 2080 + i32.const 5 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2080 + i32.store offset=12 + local.get $2 + i32.const 2080 + i32.const -1 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2496 + i32.const 8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) + i32.const 0 + local.set $0 + i32.const 0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $__inlined_func$~lib/staticarray/StaticArray#includes + drop + loop $while-continue|0 + local.get $0 + local.get $3 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $5 + local.get $5 + f64.ne + local.get $5 + f64.const nan:0x8000000000000 + f64.eq + select + br_if $__inlined_func$~lib/staticarray/StaticArray#includes + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + end + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 131 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2528 + i32.const 4 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) + i32.const 0 + local.set $0 + i32.const 0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $__inlined_func$~lib/staticarray/StaticArray#includes + drop + loop $while-continue|07 + local.get $0 + local.get $3 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $6 + local.get $6 + f32.ne + local.get $6 + f32.const nan:0x400000 + f32.eq + select + br_if $__inlined_func$~lib/staticarray/StaticArray#includes + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|07 + end + end + i32.const 0 + end + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2560 + i32.const 12 + call $~lib/memory/memory.copy + local.get $2 + i32.store offset=16 + i32.const 0 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + i32.eqz + i32.const 1 + local.get $1 + select + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf + end + loop $while-continue|013 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|013 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1216 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + i32.eqz + i32.const 1 + local.get $1 + select + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf14 + end + loop $while-continue|015 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 7 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf14 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|015 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 139 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 2 + i32.le_u + i32.const 1 + local.get $1 + select + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + end + loop $while-continue|017 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 9 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|017 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 140 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/staticarray/StaticArray#indexOf18 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const -1 + i32.le_s + i32.const 1 + local.get $1 + select + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf18 + end + local.get $1 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + loop $while-continue|019 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf18 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|019 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const -3 + i32.le_s + i32.const 1 + local.get $1 + select + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf20 + end + local.get $1 + 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 $while-continue|021 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|021 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1216 + i32.const 142 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 9 + i32.const 2688 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2752 + i32.store offset=20 + local.get $2 + i32.const 2752 + call $~lib/array/Array<~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 2784 + i32.store offset=12 + local.get $0 + i32.const 2784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2720 + i32.store offset=20 + local.get $2 + i32.const 2720 + call $~lib/array/Array<~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 2832 + i32.store offset=12 + local.get $0 + i32.const 2832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2880 + i32.store offset=20 + local.get $2 + i32.const 2880 + call $~lib/array/Array<~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 2912 + i32.store offset=12 + local.get $0 + i32.const 2912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2960 + i32.store offset=20 + local.get $2 + i32.const 2960 + call $~lib/array/Array<~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 2992 + i32.store offset=12 + local.get $0 + i32.const 2992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2752 + i32.store offset=20 + local.get $2 + i32.const 2752 + call $~lib/array/Array<~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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3188 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 2752 + i32.store + local.get $2 + i32.const 2752 + call $~lib/array/Array<~lib/string/String>#join + local.set $2 + 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 $2 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + i32.const 3056 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=24 + local.get $2 + i32.load offset=12 + local.set $0 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#lastIndexOf + local.get $2 + i32.load offset=12 + local.tee $3 + i32.eqz + br_if $__inlined_func$~lib/array/Array#lastIndexOf + local.get $0 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $0 + local.get $0 + local.get $3 + i32.ge_s + select + local.get $0 + i32.const 0 + i32.lt_s + select + local.set $0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|00 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf + local.get $1 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|00 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=12 + local.set $0 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#lastIndexOf5 + local.get $2 + i32.load offset=12 + local.tee $3 + i32.eqz + br_if $__inlined_func$~lib/array/Array#lastIndexOf5 + local.get $0 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $0 + local.get $0 + local.get $3 + i32.ge_s + select + local.get $0 + i32.const 0 + i32.lt_s + select + local.set $0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|06 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 7 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf5 + local.get $1 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|06 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#lastIndexOf7 + local.get $2 + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf7 + end + local.get $0 + i32.const 1 + i32.sub + i32.const 3 + local.get $0 + i32.const 3 + i32.le_s + select + local.set $0 + local.get $2 + i32.load offset=4 + local.set $1 + loop $while-continue|023 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf7 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|023 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#lastIndexOf24 + local.get $2 + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf24 + end + local.get $0 + i32.const 1 + i32.sub + i32.const 2 + local.get $0 + i32.const 2 + i32.le_s + select + local.set $0 + local.get $2 + i32.load offset=4 + local.set $1 + loop $while-continue|025 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf24 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|025 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1216 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#lastIndexOf26 + local.get $2 + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf26 + end + local.get $0 + i32.const 2 + i32.sub + local.set $0 + local.get $2 + i32.load offset=4 + local.set $1 + loop $while-continue|027 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf26 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|027 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + if + i32.const 0 + i32.const 1216 + i32.const 162 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#lastIndexOf28 + local.get $2 + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf28 + end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.load offset=4 + local.set $2 + loop $while-continue|029 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf28 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|029 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -1 - call $~lib/array/Array#lastIndexOf - i32.const 3 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 19572 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state i32.const 0 - i32.const 1216 - i32.const 163 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 19572 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|032 + i32.gt_s + if + loop $while-continue|08 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|08 + 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|032 + 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 28 + i32.add + global.set $~lib/memory/__stack_pointer + return 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 28 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 19600 + i32.const 19648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $std/staticarray/Ref#constructor (result i32) (local $0 i32) @@ -4301,11 +5500,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.const 4 call $~lib/rt/itcms/__new @@ -4319,39 +5529,62 @@ ) (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result 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 - call $~stack_check 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 $5 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.const 2 i32.shl - local.tee $3 + local.tee $4 + local.set $6 + local.get $4 i32.const 0 + call $~lib/rt/itcms/__new + local.set $3 local.get $2 - call $~lib/rt/__newBuffer - local.tee $2 + if + local.get $3 + local.get $2 + local.get $6 + call $~lib/memory/memory.copy + end + local.get $5 + local.get $3 i32.store i32.const 16 local.get $1 call $~lib/rt/itcms/__new local.tee $1 - local.get $2 + local.get $3 i32.store local.get $1 - local.get $2 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link local.get $1 - local.get $2 + local.get $3 i32.store offset=4 local.get $1 - local.get $3 + local.get $4 i32.store offset=8 local.get $1 local.get $0 @@ -4369,11 +5602,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $1 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.load offset=12 i32.const 2 @@ -4402,26 +5646,36 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - i32.const 0 - local.get $1 - select local.tee $3 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u + i32.const 0 + local.get $1 + select local.tee $4 i32.add local.tee $2 @@ -4445,7 +5699,7 @@ i32.store local.get $2 local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl local.tee $0 @@ -4454,7 +5708,7 @@ local.get $2 i32.add local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -4471,7 +5725,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store @@ -4585,7 +5849,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store @@ -4641,7 +5915,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i32.const 0 i32.store diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 093242efdc..d9c688696a 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -1,10 +1,10 @@ (module (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_=>_i32 (func (param 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_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $none_=>_i32 (func (result i32))) @@ -28,442 +28,447 @@ (data (i32.const 1416) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1468) "L\03") (data (i32.const 1480) "\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") - (data (i32.const 2316) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") - (data (i32.const 2939) "$++++++++\01\00TVVVVVVVV") - (data (i32.const 2978) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") - (data (i32.const 3487) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") - (data (i32.const 3573) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") - (data (i32.const 3732) "\0cl\00\00\00\00\00\06") - (data (i32.const 3778) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") - (data (i32.const 4229) "N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P") - (data (i32.const 4294) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") - (data (i32.const 4407) "H") - (data (i32.const 4417) "*++++++++++++++++++++++++++") - (data (i32.const 4477) "++++++++\07\00HVVVVVVVV\02") - (data (i32.const 4552) "+++++++++++++UVVVVVVVVVVVV\0e") - (data (i32.const 4610) "$+++++++++++\07\00VVVVVVVVVVVV") - (data (i32.const 4680) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") - (data (i32.const 4777) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4831) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4896) "+++++++++++UVVVVVVVVVV\0e") - (data (i32.const 4985) "\08\00\00V\01\00\009") - (data (i32.const 5000) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data (i32.const 5957) "\06\'Qow") - (data (i32.const 5972) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") - (data (i32.const 6000) "\b4\c4") - (data (i32.const 6122) "\c6\c9\00\00\00\db") - (data (i32.const 6211) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") - (data (i32.const 6236) "\e7") - (data (i32.const 6322) "\ea") - (data (i32.const 6445) "\ed") - (data (i32.const 6468) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") - (data (i32.const 6876) "L") - (data (i32.const 6888) "\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") - (data (i32.const 6956) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") - (data (i32.const 7500) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") - (data (i32.const 7586) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") - (data (i32.const 7644) "\f8\03") - (data (i32.const 7671) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") - (data (i32.const 7718) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") - (data (i32.const 7744) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") - (data (i32.const 7782) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") - (data (i32.const 7954) "\f2\07\c0\7f") - (data (i32.const 7970) "\f2\1f@?") - (data (i32.const 7983) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") - (data (i32.const 8017) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") - (data (i32.const 8043) "\10") - (data (i32.const 8055) "\e0") - (data (i32.const 8078) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") - (data (i32.const 8144) "\87\01\04\0e") - (data (i32.const 8174) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") - (data (i32.const 8262) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") - (data (i32.const 8323) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") - (data (i32.const 8379) "0") - (data (i32.const 8393) "\80\03") - (data (i32.const 8409) "\80\00\80") - (data (i32.const 8424) "\ff\ff\ff\ff\00\00\00\00\00\80") - (data (i32.const 8460) " \00\00\00\00<>\08") - (data (i32.const 8479) "~") - (data (i32.const 8491) "p\00\00 ") - (data (i32.const 8555) "?\00\10") - (data (i32.const 8569) "\80\f7\bf\00\00\00\f0") - (data (i32.const 8586) "\03\00\ff\ff\ff\ff\03") - (data (i32.const 8602) "\01\00\00\07") - (data (i32.const 8619) "\03D\08\00\00`\10") - (data (i32.const 8644) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") - (data (i32.const 8727) "\f8\00\0e") - (data (i32.const 8744) " !\00\00\00\00\00@") - (data (i32.const 8770) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") - (data (i32.const 8811) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") - (data (i32.const 8875) " ") - (data (i32.const 8904) "\01") - (data (i32.const 8922) "\c0\07") - (data (i32.const 8940) "n\f0\00\00\00\00\00\87") - (data (i32.const 8968) "`\00\00\00\00\00\00\00\f0") - (data (i32.const 9025) "\18") - (data (i32.const 9044) "\c0\ff\01") - (data (i32.const 9068) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") - (data (i32.const 9137) "\80\d3@") - (data (i32.const 9159) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") - (data (i32.const 9203) "\ff\\\00\00@") - (data (i32.const 9218) "\f8\85\0d") - (data (i32.const 9250) "<\b0\01\00\000") - (data (i32.const 9266) "\f8\a7\01") - (data (i32.const 9281) "(\bf") - (data (i32.const 9295) "\e0\bc\0f") - (data (i32.const 9329) "\80\ff\06") - (data (i32.const 9363) "X\08") - (data (i32.const 9382) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") - (data (i32.const 9426) "\7f\bf") - (data (i32.const 9438) "\fc\ff\ff\fcm") - (data (i32.const 9458) "~\b4\bf") - (data (i32.const 9470) "\a3") - (data (i32.const 9514) "\18\00\00\00\00\00\00\00\ff\01") - (data (i32.const 9578) "\1f\00\00\00\00\00\00\00\7f\00\0f") - (data (i32.const 9621) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") - (data (i32.const 9663) "`\0f") - (data (i32.const 9688) "\80\03\f8\ff\e7\0f\00\00\00<") - (data (i32.const 9716) "\1c") - (data (i32.const 9740) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") - (data (i32.const 9772) "\7f\ff\ff\f9\db\07") - (data (i32.const 9810) "\ff?") - (data (i32.const 9865) "\f0") - (data (i32.const 9894) "\7f") - (data (i32.const 9908) "\f0\0f") - (data (i32.const 9963) "\f8") - (data (i32.const 9964) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") - (data (i32.const 10508) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") - (data (i32.const 10644) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") - (data (i32.const 10752) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") - (data (i32.const 10784) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") - (data (i32.const 10812) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") - (data (i32.const 10906) "\02\80\00\00\ff\1f") - (data (i32.const 10924) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") - (data (i32.const 10978) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") - (data (i32.const 11060) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") - (data (i32.const 11088) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") - (data (i32.const 11184) "\fe\ff\ff\07\fe\ff\ff\07") - (data (i32.const 11212) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11234) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") - (data (i32.const 11260) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") - (data (i32.const 11296) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11316) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11340) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") - (data (i32.const 11506) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") - (data (i32.const 11532) ",") - (data (i32.const 11544) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") - (data (i32.const 11580) ",") - (data (i32.const 11592) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") - (data (i32.const 11628) ",") - (data (i32.const 11640) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") - (data (i32.const 11676) ",") - (data (i32.const 11688) "\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") - (data (i32.const 11724) "\\") - (data (i32.const 11736) "\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data (i32.const 11820) "\\") - (data (i32.const 11832) "\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") - (data (i32.const 11916) "\\") - (data (i32.const 11928) "\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data (i32.const 12012) "<") - (data (i32.const 12024) "\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data (i32.const 12076) "<") - (data (i32.const 12088) "\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") - (data (i32.const 12140) "<") - (data (i32.const 12152) "\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data (i32.const 12204) "\\") - (data (i32.const 12216) "\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data (i32.const 12300) "\\") - (data (i32.const 12312) "\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") - (data (i32.const 12396) "\\") - (data (i32.const 12408) "\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data (i32.const 12492) "\\") - (data (i32.const 12504) "\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") - (data (i32.const 12588) "\\") - (data (i32.const 12600) "\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") - (data (i32.const 12684) "\\") - (data (i32.const 12696) "\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") - (data (i32.const 12780) "L") - (data (i32.const 12792) "\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") - (data (i32.const 12860) "L") - (data (i32.const 12872) "\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") - (data (i32.const 12940) "L") - (data (i32.const 12952) "\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") - (data (i32.const 13020) "L") - (data (i32.const 13032) "\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") - (data (i32.const 13100) "<") - (data (i32.const 13112) "\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") - (data (i32.const 13164) "<") - (data (i32.const 13176) "\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") - (data (i32.const 13228) "L") - (data (i32.const 13240) "\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") - (data (i32.const 13308) "L") - (data (i32.const 13320) "\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") - (data (i32.const 13388) "L") - (data (i32.const 13400) "\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 13468) "L") - (data (i32.const 13480) "\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 13548) "<") - (data (i32.const 13560) "\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") - (data (i32.const 13612) "<") - (data (i32.const 13624) "\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") - (data (i32.const 13676) "L") - (data (i32.const 13688) "\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 13756) "L") - (data (i32.const 13768) "\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 13836) "L") - (data (i32.const 13848) "\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") - (data (i32.const 13916) "L") - (data (i32.const 13928) "\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") - (data (i32.const 13996) "\9c") - (data (i32.const 14008) "\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 14156) "\9c") - (data (i32.const 14168) "\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z") - (data (i32.const 14316) "\9c") - (data (i32.const 14328) "\01\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 14476) "\1c") - (data (i32.const 14488) "\01\00\00\00\02\00\00\00\df") - (data (i32.const 14508) "\1c") - (data (i32.const 14520) "\01\00\00\00\04\00\00\00S\00S") - (data (i32.const 14540) "\1c") - (data (i32.const 14552) "\01\00\00\00\02\00\00\000\01") - (data (i32.const 14572) "\1c") - (data (i32.const 14584) "\01\00\00\00\04\00\00\00i\00\07\03") - (data (i32.const 14604) "\cc") - (data (i32.const 14616) "\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") - (data (i32.const 14812) "\cc") - (data (i32.const 14824) "\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") - (data (i32.const 15020) "\1c") - (data (i32.const 15032) "\01\00\00\00\04\00\00\00s\00s") - (data (i32.const 15052) "\1c") - (data (i32.const 15064) "\01\00\00\00\02\00\00\00\01\fb") - (data (i32.const 15084) "\1c") - (data (i32.const 15096) "\01\00\00\00\04\00\00\00f\00i") - (data (i32.const 15116) "\cc") - (data (i32.const 15128) "\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") - (data (i32.const 15324) ",") - (data (i32.const 15336) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 15372) "\1c") - (data (i32.const 15384) "\01\00\00\00\04\00\00\00\00\d8\00\dc") - (data (i32.const 15404) "\1c") - (data (i32.const 15416) "\01\00\00\00\02\00\00\00\88\1f") - (data (i32.const 15436) "\1c") - (data (i32.const 15448) "\01\00\00\00\02\00\00\00\80\1f") - (data (i32.const 15468) "\1c") - (data (i32.const 15480) "\01\00\00\00\02\00\00\00\8f\1f") - (data (i32.const 15500) "\1c") - (data (i32.const 15512) "\01\00\00\00\02\00\00\00\87\1f") - (data (i32.const 15532) "\1c") - (data (i32.const 15544) "\01\00\00\00\02\00\00\00\fc\1f") - (data (i32.const 15564) "\1c") - (data (i32.const 15576) "\01\00\00\00\02\00\00\00\f3\1f") - (data (i32.const 15596) "\1c") - (data (i32.const 15608) "\01\00\00\00\02\00\00\00\a3\03") + (data (i32.const 2317) "\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") + (data (i32.const 2444) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") + (data (i32.const 3067) "$++++++++\01\00TVVVVVVVV") + (data (i32.const 3106) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") + (data (i32.const 3615) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") + (data (i32.const 3701) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") + (data (i32.const 3860) "\0cl\00\00\00\00\00\06") + (data (i32.const 3906) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") + (data (i32.const 4357) "N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P") + (data (i32.const 4422) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") + (data (i32.const 4535) "H") + (data (i32.const 4545) "*++++++++++++++++++++++++++") + (data (i32.const 4605) "++++++++\07\00HVVVVVVVV\02") + (data (i32.const 4680) "+++++++++++++UVVVVVVVVVVVV\0e") + (data (i32.const 4738) "$+++++++++++\07\00VVVVVVVVVVVV") + (data (i32.const 4808) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") + (data (i32.const 4905) "*++++++++++VVVVVVVVVV\0e") + (data (i32.const 4959) "*++++++++++VVVVVVVVVV\0e") + (data (i32.const 5024) "+++++++++++UVVVVVVVVVV\0e") + (data (i32.const 5113) "\08\00\00V\01\00\009") + (data (i32.const 5128) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") + (data (i32.const 6085) "\06\'Qow") + (data (i32.const 6100) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") + (data (i32.const 6128) "\b4\c4") + (data (i32.const 6250) "\c6\c9\00\00\00\db") + (data (i32.const 6339) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") + (data (i32.const 6364) "\e7") + (data (i32.const 6450) "\ea") + (data (i32.const 6573) "\ed") + (data (i32.const 6596) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") + (data (i32.const 7004) "L") + (data (i32.const 7016) "\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") + (data (i32.const 7085) "\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") + (data (i32.const 7212) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") + (data (i32.const 7756) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") + (data (i32.const 7842) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") + (data (i32.const 7900) "\f8\03") + (data (i32.const 7927) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") + (data (i32.const 7974) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") + (data (i32.const 8000) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") + (data (i32.const 8038) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") + (data (i32.const 8210) "\f2\07\c0\7f") + (data (i32.const 8226) "\f2\1f@?") + (data (i32.const 8239) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") + (data (i32.const 8273) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") + (data (i32.const 8299) "\10") + (data (i32.const 8311) "\e0") + (data (i32.const 8334) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") + (data (i32.const 8400) "\87\01\04\0e") + (data (i32.const 8430) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") + (data (i32.const 8518) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") + (data (i32.const 8579) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") + (data (i32.const 8635) "0") + (data (i32.const 8649) "\80\03") + (data (i32.const 8665) "\80\00\80") + (data (i32.const 8680) "\ff\ff\ff\ff\00\00\00\00\00\80") + (data (i32.const 8716) " \00\00\00\00<>\08") + (data (i32.const 8735) "~") + (data (i32.const 8747) "p\00\00 ") + (data (i32.const 8811) "?\00\10") + (data (i32.const 8825) "\80\f7\bf\00\00\00\f0") + (data (i32.const 8842) "\03\00\ff\ff\ff\ff\03") + (data (i32.const 8858) "\01\00\00\07") + (data (i32.const 8875) "\03D\08\00\00`\10") + (data (i32.const 8900) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") + (data (i32.const 8983) "\f8\00\0e") + (data (i32.const 9000) " !\00\00\00\00\00@") + (data (i32.const 9026) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") + (data (i32.const 9067) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") + (data (i32.const 9131) " ") + (data (i32.const 9160) "\01") + (data (i32.const 9178) "\c0\07") + (data (i32.const 9196) "n\f0\00\00\00\00\00\87") + (data (i32.const 9224) "`\00\00\00\00\00\00\00\f0") + (data (i32.const 9281) "\18") + (data (i32.const 9300) "\c0\ff\01") + (data (i32.const 9324) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") + (data (i32.const 9393) "\80\d3@") + (data (i32.const 9415) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") + (data (i32.const 9459) "\ff\\\00\00@") + (data (i32.const 9474) "\f8\85\0d") + (data (i32.const 9506) "<\b0\01\00\000") + (data (i32.const 9522) "\f8\a7\01") + (data (i32.const 9537) "(\bf") + (data (i32.const 9551) "\e0\bc\0f") + (data (i32.const 9585) "\80\ff\06") + (data (i32.const 9619) "X\08") + (data (i32.const 9638) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") + (data (i32.const 9682) "\7f\bf") + (data (i32.const 9694) "\fc\ff\ff\fcm") + (data (i32.const 9714) "~\b4\bf") + (data (i32.const 9726) "\a3") + (data (i32.const 9770) "\18\00\00\00\00\00\00\00\ff\01") + (data (i32.const 9834) "\1f\00\00\00\00\00\00\00\7f\00\0f") + (data (i32.const 9877) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") + (data (i32.const 9919) "`\0f") + (data (i32.const 9944) "\80\03\f8\ff\e7\0f\00\00\00<") + (data (i32.const 9972) "\1c") + (data (i32.const 9996) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") + (data (i32.const 10028) "\7f\ff\ff\f9\db\07") + (data (i32.const 10066) "\ff?") + (data (i32.const 10121) "\f0") + (data (i32.const 10150) "\7f") + (data (i32.const 10164) "\f0\0f") + (data (i32.const 10219) "\f8") + (data (i32.const 10220) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") + (data (i32.const 10764) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") + (data (i32.const 10900) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") + (data (i32.const 11008) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") + (data (i32.const 11040) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") + (data (i32.const 11068) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") + (data (i32.const 11162) "\02\80\00\00\ff\1f") + (data (i32.const 11180) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") + (data (i32.const 11234) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") + (data (i32.const 11316) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") + (data (i32.const 11344) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") + (data (i32.const 11440) "\fe\ff\ff\07\fe\ff\ff\07") + (data (i32.const 11468) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11490) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") + (data (i32.const 11516) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") + (data (i32.const 11552) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11572) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11596) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") + (data (i32.const 11762) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") + (data (i32.const 11788) ",") + (data (i32.const 11800) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") + (data (i32.const 11836) ",") + (data (i32.const 11848) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") + (data (i32.const 11884) ",") + (data (i32.const 11896) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") + (data (i32.const 11932) ",") + (data (i32.const 11944) "\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") + (data (i32.const 11980) "\\") + (data (i32.const 11992) "\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data (i32.const 12076) "\\") + (data (i32.const 12088) "\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") + (data (i32.const 12172) "\\") + (data (i32.const 12184) "\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data (i32.const 12268) "<") + (data (i32.const 12280) "\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data (i32.const 12332) "<") + (data (i32.const 12344) "\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") + (data (i32.const 12396) "<") + (data (i32.const 12408) "\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data (i32.const 12460) "\\") + (data (i32.const 12472) "\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data (i32.const 12556) "\\") + (data (i32.const 12568) "\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") + (data (i32.const 12652) "\\") + (data (i32.const 12664) "\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data (i32.const 12748) "\\") + (data (i32.const 12760) "\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") + (data (i32.const 12844) "\\") + (data (i32.const 12856) "\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") + (data (i32.const 12940) "\\") + (data (i32.const 12952) "\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") + (data (i32.const 13036) "L") + (data (i32.const 13048) "\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") + (data (i32.const 13116) "L") + (data (i32.const 13128) "\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") + (data (i32.const 13196) "L") + (data (i32.const 13208) "\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") + (data (i32.const 13276) "L") + (data (i32.const 13288) "\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") + (data (i32.const 13356) "<") + (data (i32.const 13368) "\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") + (data (i32.const 13420) "<") + (data (i32.const 13432) "\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") + (data (i32.const 13484) "L") + (data (i32.const 13496) "\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") + (data (i32.const 13564) "L") + (data (i32.const 13576) "\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") + (data (i32.const 13644) "L") + (data (i32.const 13656) "\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") + (data (i32.const 13724) "L") + (data (i32.const 13736) "\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") + (data (i32.const 13804) "<") + (data (i32.const 13816) "\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") + (data (i32.const 13868) "<") + (data (i32.const 13880) "\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") + (data (i32.const 13932) "L") + (data (i32.const 13944) "\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") + (data (i32.const 14012) "L") + (data (i32.const 14024) "\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") + (data (i32.const 14092) "L") + (data (i32.const 14104) "\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") + (data (i32.const 14172) "L") + (data (i32.const 14184) "\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") + (data (i32.const 14252) "\9c") + (data (i32.const 14264) "\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 14412) "\9c") + (data (i32.const 14424) "\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z") + (data (i32.const 14572) "\9c") + (data (i32.const 14584) "\01\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 14732) "\1c") + (data (i32.const 14744) "\01\00\00\00\02\00\00\00\df") + (data (i32.const 14764) "\1c") + (data (i32.const 14776) "\01\00\00\00\04\00\00\00S\00S") + (data (i32.const 14796) "\1c") + (data (i32.const 14808) "\01\00\00\00\02\00\00\000\01") + (data (i32.const 14828) "\1c") + (data (i32.const 14840) "\01\00\00\00\04\00\00\00i\00\07\03") + (data (i32.const 14860) "\cc") + (data (i32.const 14872) "\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") + (data (i32.const 15068) "\cc") + (data (i32.const 15080) "\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") + (data (i32.const 15276) "\1c") + (data (i32.const 15288) "\01\00\00\00\04\00\00\00s\00s") + (data (i32.const 15308) "\1c") + (data (i32.const 15320) "\01\00\00\00\02\00\00\00\01\fb") + (data (i32.const 15340) "\1c") + (data (i32.const 15352) "\01\00\00\00\04\00\00\00f\00i") + (data (i32.const 15372) "\cc") + (data (i32.const 15384) "\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") + (data (i32.const 15580) ",") + (data (i32.const 15592) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") (data (i32.const 15628) "\1c") - (data (i32.const 15640) "\01\00\00\00\02\00\00\00\c3\03") + (data (i32.const 15640) "\01\00\00\00\04\00\00\00\00\d8\00\dc") (data (i32.const 15660) "\1c") - (data (i32.const 15672) "\01\00\00\00\04\00\00\00 \00\a3\03") + (data (i32.const 15672) "\01\00\00\00\02\00\00\00\88\1f") (data (i32.const 15692) "\1c") - (data (i32.const 15704) "\01\00\00\00\04\00\00\00 \00\c3\03") + (data (i32.const 15704) "\01\00\00\00\02\00\00\00\80\1f") (data (i32.const 15724) "\1c") - (data (i32.const 15736) "\01\00\00\00\04\00\00\00\a3\03 ") + (data (i32.const 15736) "\01\00\00\00\02\00\00\00\8f\1f") (data (i32.const 15756) "\1c") - (data (i32.const 15768) "\01\00\00\00\04\00\00\00\c3\03 ") + (data (i32.const 15768) "\01\00\00\00\02\00\00\00\87\1f") (data (i32.const 15788) "\1c") - (data (i32.const 15800) "\01\00\00\00\06\00\00\00 \00\a3\03 ") + (data (i32.const 15800) "\01\00\00\00\02\00\00\00\fc\1f") (data (i32.const 15820) "\1c") - (data (i32.const 15832) "\01\00\00\00\06\00\00\00 \00\c3\03 ") + (data (i32.const 15832) "\01\00\00\00\02\00\00\00\f3\1f") (data (i32.const 15852) "\1c") - (data (i32.const 15864) "\01\00\00\00\06\00\00\00a\00\a3\03 ") + (data (i32.const 15864) "\01\00\00\00\02\00\00\00\a3\03") (data (i32.const 15884) "\1c") - (data (i32.const 15896) "\01\00\00\00\06\00\00\00a\00\c2\03 ") + (data (i32.const 15896) "\01\00\00\00\02\00\00\00\c3\03") (data (i32.const 15916) "\1c") - (data (i32.const 15928) "\01\00\00\00\06\00\00\00a\00\a3\03\n") + (data (i32.const 15928) "\01\00\00\00\04\00\00\00 \00\a3\03") (data (i32.const 15948) "\1c") - (data (i32.const 15960) "\01\00\00\00\06\00\00\00a\00\c2\03\n") + (data (i32.const 15960) "\01\00\00\00\04\00\00\00 \00\c3\03") (data (i32.const 15980) "\1c") - (data (i32.const 15992) "\01\00\00\00\04\00\00\00a\00\a3\03") + (data (i32.const 15992) "\01\00\00\00\04\00\00\00\a3\03 ") (data (i32.const 16012) "\1c") - (data (i32.const 16024) "\01\00\00\00\04\00\00\00a\00\c2\03") + (data (i32.const 16024) "\01\00\00\00\04\00\00\00\c3\03 ") (data (i32.const 16044) "\1c") - (data (i32.const 16056) "\01\00\00\00\06\00\00\00a\00\a3\03b") + (data (i32.const 16056) "\01\00\00\00\06\00\00\00 \00\a3\03 ") (data (i32.const 16076) "\1c") - (data (i32.const 16088) "\01\00\00\00\06\00\00\00a\00\c3\03b") + (data (i32.const 16088) "\01\00\00\00\06\00\00\00 \00\c3\03 ") (data (i32.const 16108) "\1c") - (data (i32.const 16120) "\01\00\00\00\06\00\00\00\a3\03\a3\03 ") + (data (i32.const 16120) "\01\00\00\00\06\00\00\00a\00\a3\03 ") (data (i32.const 16140) "\1c") - (data (i32.const 16152) "\01\00\00\00\06\00\00\00\c3\03\c2\03 ") + (data (i32.const 16152) "\01\00\00\00\06\00\00\00a\00\c2\03 ") (data (i32.const 16172) "\1c") - (data (i32.const 16184) "\01\00\00\00\06\00\00\001\00\a3\03 ") + (data (i32.const 16184) "\01\00\00\00\06\00\00\00a\00\a3\03\n") (data (i32.const 16204) "\1c") - (data (i32.const 16216) "\01\00\00\00\06\00\00\001\00\c3\03 ") + (data (i32.const 16216) "\01\00\00\00\06\00\00\00a\00\c2\03\n") (data (i32.const 16236) "\1c") - (data (i32.const 16248) "\01\00\00\00\06\00\00\00;\00\a3\03 ") + (data (i32.const 16248) "\01\00\00\00\04\00\00\00a\00\a3\03") (data (i32.const 16268) "\1c") - (data (i32.const 16280) "\01\00\00\00\06\00\00\00;\00\c3\03 ") + (data (i32.const 16280) "\01\00\00\00\04\00\00\00a\00\c2\03") (data (i32.const 16300) "\1c") - (data (i32.const 16312) "\01\00\00\00\06\00\00\00\01\03\a3\03 ") + (data (i32.const 16312) "\01\00\00\00\06\00\00\00a\00\a3\03b") (data (i32.const 16332) "\1c") - (data (i32.const 16344) "\01\00\00\00\06\00\00\00\01\03\c3\03 ") + (data (i32.const 16344) "\01\00\00\00\06\00\00\00a\00\c3\03b") (data (i32.const 16364) "\1c") - (data (i32.const 16376) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") + (data (i32.const 16376) "\01\00\00\00\06\00\00\00\a3\03\a3\03 ") (data (i32.const 16396) "\1c") - (data (i32.const 16408) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") + (data (i32.const 16408) "\01\00\00\00\06\00\00\00\c3\03\c2\03 ") (data (i32.const 16428) "\1c") - (data (i32.const 16440) "\01\00\00\00\06\00\00\00\a3\03\a3\03-") + (data (i32.const 16440) "\01\00\00\00\06\00\00\001\00\a3\03 ") (data (i32.const 16460) "\1c") - (data (i32.const 16472) "\01\00\00\00\06\00\00\00\c3\03\c2\03-") + (data (i32.const 16472) "\01\00\00\00\06\00\00\001\00\c3\03 ") (data (i32.const 16492) "\1c") - (data (i32.const 16504) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") + (data (i32.const 16504) "\01\00\00\00\06\00\00\00;\00\a3\03 ") (data (i32.const 16524) "\1c") - (data (i32.const 16536) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") + (data (i32.const 16536) "\01\00\00\00\06\00\00\00;\00\c3\03 ") (data (i32.const 16556) "\1c") - (data (i32.const 16568) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") + (data (i32.const 16568) "\01\00\00\00\06\00\00\00\01\03\a3\03 ") (data (i32.const 16588) "\1c") - (data (i32.const 16600) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") + (data (i32.const 16600) "\01\00\00\00\06\00\00\00\01\03\c3\03 ") (data (i32.const 16620) "\1c") - (data (i32.const 16632) "\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") + (data (i32.const 16632) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") (data (i32.const 16652) "\1c") - (data (i32.const 16664) "\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") + (data (i32.const 16664) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") (data (i32.const 16684) "\1c") - (data (i32.const 16696) "\01\00\00\00\06\00\00\00A\00.\00\a3\03") + (data (i32.const 16696) "\01\00\00\00\06\00\00\00\a3\03\a3\03-") (data (i32.const 16716) "\1c") - (data (i32.const 16728) "\01\00\00\00\06\00\00\00a\00.\00\c2\03") + (data (i32.const 16728) "\01\00\00\00\06\00\00\00\c3\03\c2\03-") (data (i32.const 16748) "\1c") - (data (i32.const 16760) "\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") + (data (i32.const 16760) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") (data (i32.const 16780) "\1c") - (data (i32.const 16792) "\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") + (data (i32.const 16792) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") (data (i32.const 16812) "\1c") - (data (i32.const 16824) "\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") + (data (i32.const 16824) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") (data (i32.const 16844) "\1c") - (data (i32.const 16856) "\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") + (data (i32.const 16856) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") (data (i32.const 16876) "\1c") - (data (i32.const 16888) "\01\00\00\00\04\00\00\00E\03\a3\03") + (data (i32.const 16888) "\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") (data (i32.const 16908) "\1c") - (data (i32.const 16920) "\01\00\00\00\04\00\00\00E\03\c3\03") + (data (i32.const 16920) "\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") (data (i32.const 16940) "\1c") - (data (i32.const 16952) "\01\00\00\00\06\00\00\00\91\03E\03\a3\03") + (data (i32.const 16952) "\01\00\00\00\06\00\00\00A\00.\00\a3\03") (data (i32.const 16972) "\1c") - (data (i32.const 16984) "\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") + (data (i32.const 16984) "\01\00\00\00\06\00\00\00a\00.\00\c2\03") (data (i32.const 17004) "\1c") - (data (i32.const 17016) "\01\00\00\00\06\00\00\00A\00\a3\03B") + (data (i32.const 17016) "\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") (data (i32.const 17036) "\1c") - (data (i32.const 17048) "\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") + (data (i32.const 17048) "\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") (data (i32.const 17068) "\1c") - (data (i32.const 17080) "\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") + (data (i32.const 17080) "\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") (data (i32.const 17100) "\1c") - (data (i32.const 17112) "\01\00\00\00\08\00\00\00A\00\a3\03.\00b") + (data (i32.const 17112) "\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") (data (i32.const 17132) "\1c") - (data (i32.const 17144) "\01\00\00\00\08\00\00\00a\00\c3\03.\00b") + (data (i32.const 17144) "\01\00\00\00\04\00\00\00E\03\a3\03") (data (i32.const 17164) "\1c") - (data (i32.const 17176) "\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") + (data (i32.const 17176) "\01\00\00\00\04\00\00\00E\03\c3\03") (data (i32.const 17196) "\1c") - (data (i32.const 17208) "\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") + (data (i32.const 17208) "\01\00\00\00\06\00\00\00\91\03E\03\a3\03") (data (i32.const 17228) "\1c") - (data (i32.const 17240) "\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") + (data (i32.const 17240) "\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") (data (i32.const 17260) "\1c") - (data (i32.const 17272) "\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") + (data (i32.const 17272) "\01\00\00\00\06\00\00\00A\00\a3\03B") (data (i32.const 17292) "\1c") - (data (i32.const 17304) "\01\00\00\00\06\00\00\00A\00\a3\03E\03") + (data (i32.const 17304) "\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") (data (i32.const 17324) "\1c") - (data (i32.const 17336) "\01\00\00\00\06\00\00\00a\00\c2\03E\03") + (data (i32.const 17336) "\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") (data (i32.const 17356) "\1c") - (data (i32.const 17368) "\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") + (data (i32.const 17368) "\01\00\00\00\08\00\00\00A\00\a3\03.\00b") (data (i32.const 17388) "\1c") - (data (i32.const 17400) "\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") + (data (i32.const 17400) "\01\00\00\00\08\00\00\00a\00\c3\03.\00b") (data (i32.const 17420) "\1c") - (data (i32.const 17432) "\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") + (data (i32.const 17432) "\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") (data (i32.const 17452) "\1c") - (data (i32.const 17464) "\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") + (data (i32.const 17464) "\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") (data (i32.const 17484) "\1c") - (data (i32.const 17496) "\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") + (data (i32.const 17496) "\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") (data (i32.const 17516) "\1c") - (data (i32.const 17528) "\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") + (data (i32.const 17528) "\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") (data (i32.const 17548) "\1c") - (data (i32.const 17560) "\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") + (data (i32.const 17560) "\01\00\00\00\06\00\00\00A\00\a3\03E\03") (data (i32.const 17580) "\1c") - (data (i32.const 17592) "\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") + (data (i32.const 17592) "\01\00\00\00\06\00\00\00a\00\c2\03E\03") (data (i32.const 17612) "\1c") - (data (i32.const 17624) "\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") + (data (i32.const 17624) "\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") (data (i32.const 17644) "\1c") - (data (i32.const 17656) "\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") + (data (i32.const 17656) "\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") (data (i32.const 17676) "\1c") - (data (i32.const 17688) "\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") + (data (i32.const 17688) "\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") (data (i32.const 17708) "\1c") - (data (i32.const 17720) "\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") + (data (i32.const 17720) "\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") (data (i32.const 17740) "\1c") - (data (i32.const 17752) "\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") + (data (i32.const 17752) "\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") (data (i32.const 17772) "\1c") - (data (i32.const 17784) "\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") + (data (i32.const 17784) "\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") (data (i32.const 17804) "\1c") - (data (i32.const 17816) "\01\00\00\00\02\00\00\00\00\fb") + (data (i32.const 17816) "\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") (data (i32.const 17836) "\1c") - (data (i32.const 17848) "\01\00\00\00\04\00\00\00F\00F") + (data (i32.const 17848) "\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") (data (i32.const 17868) "\1c") - (data (i32.const 17880) "\01\00\00\00\04\00\00\00F\00I") + (data (i32.const 17880) "\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") (data (i32.const 17900) "\1c") - (data (i32.const 17912) "\01\00\00\00\02\00\00\00\02\fb") + (data (i32.const 17912) "\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") (data (i32.const 17932) "\1c") - (data (i32.const 17944) "\01\00\00\00\04\00\00\00F\00L") + (data (i32.const 17944) "\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") (data (i32.const 17964) "\1c") - (data (i32.const 17976) "\01\00\00\00\02\00\00\00\03\fb") + (data (i32.const 17976) "\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") (data (i32.const 17996) "\1c") - (data (i32.const 18008) "\01\00\00\00\06\00\00\00F\00F\00I") + (data (i32.const 18008) "\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") (data (i32.const 18028) "\1c") - (data (i32.const 18040) "\01\00\00\00\02\00\00\00\04\fb") + (data (i32.const 18040) "\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") (data (i32.const 18060) "\1c") - (data (i32.const 18072) "\01\00\00\00\06\00\00\00F\00F\00L") + (data (i32.const 18072) "\01\00\00\00\02\00\00\00\00\fb") (data (i32.const 18092) "\1c") - (data (i32.const 18104) "\01\00\00\00\02\00\00\00\05\fb") + (data (i32.const 18104) "\01\00\00\00\04\00\00\00F\00F") (data (i32.const 18124) "\1c") - (data (i32.const 18136) "\01\00\00\00\04\00\00\00S\00T") + (data (i32.const 18136) "\01\00\00\00\04\00\00\00F\00I") (data (i32.const 18156) "\1c") - (data (i32.const 18168) "\01\00\00\00\02\00\00\00\06\fb") + (data (i32.const 18168) "\01\00\00\00\02\00\00\00\02\fb") (data (i32.const 18188) "\1c") - (data (i32.const 18200) "\01\00\00\00\02\00\00\00\f0\01") + (data (i32.const 18200) "\01\00\00\00\04\00\00\00F\00L") (data (i32.const 18220) "\1c") - (data (i32.const 18232) "\01\00\00\00\04\00\00\00J\00\0c\03") + (data (i32.const 18232) "\01\00\00\00\02\00\00\00\03\fb") (data (i32.const 18252) "\1c") - (data (i32.const 18264) "\01\00\00\00\02\00\00\00\96\1e") + (data (i32.const 18264) "\01\00\00\00\06\00\00\00F\00F\00I") (data (i32.const 18284) "\1c") - (data (i32.const 18296) "\01\00\00\00\04\00\00\00H\001\03") + (data (i32.const 18296) "\01\00\00\00\02\00\00\00\04\fb") (data (i32.const 18316) "\1c") - (data (i32.const 18328) "\01\00\00\00\02\00\00\00\97\1e") + (data (i32.const 18328) "\01\00\00\00\06\00\00\00F\00F\00L") (data (i32.const 18348) "\1c") - (data (i32.const 18360) "\01\00\00\00\04\00\00\00T\00\08\03") + (data (i32.const 18360) "\01\00\00\00\02\00\00\00\05\fb") (data (i32.const 18380) "\1c") - (data (i32.const 18392) "\01\00\00\00\02\00\00\00\98\1e") + (data (i32.const 18392) "\01\00\00\00\04\00\00\00S\00T") (data (i32.const 18412) "\1c") - (data (i32.const 18424) "\01\00\00\00\04\00\00\00W\00\n\03") + (data (i32.const 18424) "\01\00\00\00\02\00\00\00\06\fb") (data (i32.const 18444) "\1c") - (data (i32.const 18456) "\01\00\00\00\02\00\00\00\99\1e") + (data (i32.const 18456) "\01\00\00\00\02\00\00\00\f0\01") (data (i32.const 18476) "\1c") - (data (i32.const 18488) "\01\00\00\00\04\00\00\00Y\00\n\03") + (data (i32.const 18488) "\01\00\00\00\04\00\00\00J\00\0c\03") (data (i32.const 18508) "\1c") - (data (i32.const 18520) "\01\00\00\00\02\00\00\00\9a\1e") + (data (i32.const 18520) "\01\00\00\00\02\00\00\00\96\1e") (data (i32.const 18540) "\1c") - (data (i32.const 18552) "\01\00\00\00\04\00\00\00A\00\be\02") - (data (i32.const 18572) "\\") - (data (i32.const 18584) "\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") - (data (i32.const 18668) "<") - (data (i32.const 18680) "\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 18732) "|") - (data (i32.const 18744) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 18860) "<") - (data (i32.const 18872) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 18924) "\1c") - (data (i32.const 18936) "\01\00\00\00\02\00\00\000") - (data (i32.const 18956) "\\") - (data (i32.const 18968) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 19052) "<") - (data (i32.const 19064) "\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 19116) "\\") - (data (i32.const 19128) "\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") - (data (i32.const 19212) "<") - (data (i32.const 19224) "\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 19276) "<") - (data (i32.const 19288) "\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 19344) "\04\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 19372) "\a4") + (data (i32.const 18552) "\01\00\00\00\04\00\00\00H\001\03") + (data (i32.const 18572) "\1c") + (data (i32.const 18584) "\01\00\00\00\02\00\00\00\97\1e") + (data (i32.const 18604) "\1c") + (data (i32.const 18616) "\01\00\00\00\04\00\00\00T\00\08\03") + (data (i32.const 18636) "\1c") + (data (i32.const 18648) "\01\00\00\00\02\00\00\00\98\1e") + (data (i32.const 18668) "\1c") + (data (i32.const 18680) "\01\00\00\00\04\00\00\00W\00\n\03") + (data (i32.const 18700) "\1c") + (data (i32.const 18712) "\01\00\00\00\02\00\00\00\99\1e") + (data (i32.const 18732) "\1c") + (data (i32.const 18744) "\01\00\00\00\04\00\00\00Y\00\n\03") + (data (i32.const 18764) "\1c") + (data (i32.const 18776) "\01\00\00\00\02\00\00\00\9a\1e") + (data (i32.const 18796) "\1c") + (data (i32.const 18808) "\01\00\00\00\04\00\00\00A\00\be\02") + (data (i32.const 18828) "\\") + (data (i32.const 18840) "\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") + (data (i32.const 18924) "<") + (data (i32.const 18936) "\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 18988) "|") + (data (i32.const 19000) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 19116) "<") + (data (i32.const 19128) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 19180) "\1c") + (data (i32.const 19192) "\01\00\00\00\02\00\00\000") + (data (i32.const 19212) "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") + (data (i32.const 19612) "\1c\04") + (data (i32.const 19624) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 20668) "\\") + (data (i32.const 20680) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 20764) "<") + (data (i32.const 20776) "\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 20828) "\\") + (data (i32.const 20840) "\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") + (data (i32.const 20924) "<") + (data (i32.const 20936) "\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 20988) "<") + (data (i32.const 21000) "\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data (i32.const 21056) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 21084) "\a4") (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)) @@ -474,18 +479,9 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35764)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37476)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -493,7 +489,9 @@ call $~lib/rt/itcms/__visit i32.const 1088 call $~lib/rt/itcms/__visit - i32.const 18976 + i32.const 19632 + call $~lib/rt/itcms/__visit + i32.const 20688 call $~lib/rt/itcms/__visit i32.const 1488 call $~lib/rt/itcms/__visit @@ -535,170 +533,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 35764 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 37476 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1152 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 21056 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 21060 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 19344 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 19348 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -986,12 +968,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1241,10 +1223,10 @@ if unreachable end - i32.const 35776 + i32.const 37488 i32.const 0 i32.store - i32.const 37344 + i32.const 39056 i32.const 0 i32.store loop $for-loop|0 @@ -1255,7 +1237,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 35776 + i32.const 37488 i32.add i32.const 0 i32.store offset=4 @@ -1273,7 +1255,7 @@ i32.add i32.const 2 i32.shl - i32.const 35776 + i32.const 37488 i32.add i32.const 0 i32.store offset=96 @@ -1291,13 +1273,13 @@ br $for-loop|0 end end - i32.const 35776 - i32.const 37348 + i32.const 37488 + i32.const 39060 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 35776 + i32.const 37488 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1345,7 +1327,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1376,7 +1363,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 35764 + i32.const 37476 i32.lt_u if local.get $0 @@ -1408,7 +1395,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1466,7 +1458,7 @@ unreachable end local.get $0 - i32.const 35764 + i32.const 37476 i32.lt_u if local.get $0 @@ -1488,8 +1480,8 @@ local.get $0 i32.const 4 i32.add - local.tee $1 - i32.const 35764 + local.tee $0 + i32.const 37476 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1498,19 +1490,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1527,11 +1519,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1541,10 +1536,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1565,28 +1562,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1683,11 +1680,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1698,50 +1764,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1749,18 +1819,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1768,18 +1838,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1791,7 +1861,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1804,12 +1874,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1823,54 +1893,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1880,125 +1950,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -2006,7 +2115,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -2039,102 +2148,7 @@ end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 - global.get $~lib/rt/itcms/total - 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) @@ -2147,16 +2161,16 @@ i32.const 8 i32.shr_u local.tee $2 - i32.const 5956 + i32.const 6084 i32.add i32.load8_u local.get $2 - i32.const 2316 + i32.const 2444 i32.add i32.load8_u i32.const 86 i32.mul - i32.const 2316 + i32.const 2444 i32.add local.get $0 i32.const 255 @@ -2171,7 +2185,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 4984 + i32.const 5112 i32.add i32.load i32.mul @@ -2182,7 +2196,7 @@ i32.add i32.const 2 i32.shl - i32.const 4996 + i32.const 5124 i32.add i32.load local.tee $2 @@ -2216,7 +2230,7 @@ i32.add i32.const 1 i32.shl - i32.const 6468 + i32.const 6596 i32.add i32.load8_u local.tee $6 @@ -2227,12 +2241,12 @@ i32.add i32.const 1 i32.shl - i32.const 6468 + i32.const 6596 i32.add i32.load8_u offset=1 i32.const 2 i32.shl - i32.const 4996 + i32.const 5124 i32.add i32.load local.tee $2 @@ -2275,17 +2289,773 @@ end end local.get $0 - return + return + end + local.get $0 + local.get $3 + i32.const 0 + local.get $1 + local.get $2 + i32.xor + i32.sub + i32.and + i32.add + ) + (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 + local.get $0 + i32.const 3 + i32.and + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $5 + 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 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - local.get $3 - i32.const 0 - local.get $1 local.get $2 - i32.xor - i32.sub + i32.const 2 i32.and - i32.add + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2297,6 +3067,24 @@ 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 @@ -2524,7 +3312,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -2538,36 +3326,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -2580,33 +3373,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -2614,93 +3407,109 @@ end i32.eqz ) - (func $~lib/util/string/stagedBinaryLookup (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $0 - local.get $1 - i32.const 8 - i32.shr_u - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.add - local.get $1 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $1 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - ) - (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.set $3 - local.get $1 - local.get $2 - i32.ge_u - if - i32.const -1 - return + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_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 19212 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end - i32.const 1 - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.eq - local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $2 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - select + i32.const 100 + i32.ge_u if + local.get $0 local.get $2 - return + 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 19212 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end - local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.tee $0 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne + 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 19212 + i32.add + i32.load + i32.store + else + local.get $0 local.get $2 - return + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 end - local.get $0 - local.get $2 - i32.const 10 - i32.shl - i32.add - i32.const 56613888 - i32.sub ) (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2710,12 +3519,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + 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/string/String#concat - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2723,9 +3542,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 - local.get $0 - local.tee $2 + local.tee $3 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -2733,9 +3551,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.add - local.tee $0 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -2743,20 +3561,20 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1056 - local.set $0 + local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 local.get $2 + local.get $0 local.get $3 call $~lib/memory/memory.copy - local.get $0 + local.get $2 local.get $3 i32.add local.get $1 @@ -2767,7 +3585,7 @@ i32.add global.set $~lib/memory/__stack_pointer end - local.get $0 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -2801,19 +3619,6 @@ (func $~start call $start:std/string-casemapping ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 19380 - i32.lt_s - if - i32.const 35792 - i32.const 35840 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $~lib/string/String#toUpperCase (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -2829,7 +3634,17 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -3106,16 +3921,9 @@ i32.shl i32.add local.get $2 - local.get $2 - i32.const 97 - i32.sub - i32.const 26 - i32.lt_u - i32.const 5 - i32.shl - i32.const -1 - i32.xor - i32.and + i32.const 2316 + i32.add + i32.load8_u i32.store16 end local.get $7 @@ -3144,63 +3952,92 @@ (local $1 i64) (local $2 i64) (local $3 i64) - (local $4 i64) + (local $4 i32) (local $5 i32) - (local $6 i32) + (local $6 i64) (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 28 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $9 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $9 i64.const 0 i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $9 i64.const 0 i64.store offset=16 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 0 i32.store offset=24 memory.size i32.const 16 i32.shl - i32.const 35764 + i32.const 37476 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 1056 i32.store offset=8 i32.const 1056 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 1056 i32.store offset=4 - local.get $7 + local.get $9 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -3211,813 +4048,746 @@ i32.store offset=8 i32.const 1056 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 1056 i32.store offset=4 - local.get $7 + local.get $9 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 11552 + i32.const 11808 i32.store offset=8 - i32.const 11552 + i32.const 11808 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11600 + local.get $5 + i32.const 11856 i32.store offset=4 - local.get $7 - i32.const 11600 + local.get $9 + i32.const 11856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 11648 + i32.const 11904 i32.store offset=8 - i32.const 11648 + i32.const 11904 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11696 + local.get $5 + i32.const 11952 i32.store offset=4 - local.get $7 - i32.const 11696 + local.get $9 + i32.const 11952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 11744 + i32.const 12000 i32.store offset=8 - i32.const 11744 + i32.const 12000 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11840 + local.get $5 + i32.const 12096 i32.store offset=4 - local.get $7 - i32.const 11840 + local.get $9 + i32.const 12096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 11840 + i32.const 12096 i32.store offset=8 - i32.const 11840 + i32.const 12096 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11936 + local.get $5 + i32.const 12192 i32.store offset=4 - local.get $7 - i32.const 11936 + local.get $9 + i32.const 12192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12032 + i32.const 12288 i32.store offset=8 - i32.const 12032 + i32.const 12288 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12096 + local.get $5 + i32.const 12352 i32.store offset=4 - local.get $7 - i32.const 12096 + local.get $9 + i32.const 12352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12096 + i32.const 12352 i32.store offset=8 - i32.const 12096 + i32.const 12352 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12160 + local.get $5 + i32.const 12416 i32.store offset=4 - local.get $7 - i32.const 12160 + local.get $9 + i32.const 12416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12224 + i32.const 12480 i32.store offset=8 - i32.const 12224 + i32.const 12480 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12320 + local.get $5 + i32.const 12576 i32.store offset=4 - local.get $7 - i32.const 12320 + local.get $9 + i32.const 12576 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12320 + i32.const 12576 i32.store offset=8 - i32.const 12320 + i32.const 12576 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12416 + local.get $5 + i32.const 12672 i32.store offset=4 - local.get $7 - i32.const 12416 + local.get $9 + i32.const 12672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12512 + i32.const 12768 i32.store offset=8 - i32.const 12512 + i32.const 12768 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12608 + local.get $5 + i32.const 12864 i32.store offset=4 - local.get $7 - i32.const 12608 + local.get $9 + i32.const 12864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12608 + i32.const 12864 i32.store offset=8 - i32.const 12608 + i32.const 12864 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12704 + local.get $5 + i32.const 12960 i32.store offset=4 - local.get $7 - i32.const 12704 + local.get $9 + i32.const 12960 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12800 + i32.const 13056 i32.store offset=8 - i32.const 12800 + i32.const 13056 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12880 + local.get $5 + i32.const 13136 i32.store offset=4 - local.get $7 - i32.const 12880 + local.get $9 + i32.const 13136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12960 + i32.const 13216 i32.store offset=8 - i32.const 12960 + i32.const 13216 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13040 + local.get $5 + i32.const 13296 i32.store offset=4 - local.get $7 - i32.const 13040 + local.get $9 + i32.const 13296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 13120 + i32.const 13376 i32.store offset=8 - i32.const 13120 + i32.const 13376 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13184 + local.get $5 + i32.const 13440 i32.store offset=4 - local.get $7 - i32.const 13184 + local.get $9 + i32.const 13440 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 13248 + i32.const 13504 i32.store offset=8 - i32.const 13248 + i32.const 13504 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13328 + local.get $5 + i32.const 13584 i32.store offset=4 - local.get $7 - i32.const 13328 + local.get $9 + i32.const 13584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 13408 + i32.const 13664 i32.store offset=8 - i32.const 13408 + i32.const 13664 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13488 + local.get $5 + i32.const 13744 i32.store offset=4 - local.get $7 - i32.const 13488 + local.get $9 + i32.const 13744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 13568 + i32.const 13824 i32.store offset=8 - i32.const 13568 + i32.const 13824 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13632 + local.get $5 + i32.const 13888 i32.store offset=4 - local.get $7 - i32.const 13632 + local.get $9 + i32.const 13888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 13696 + i32.const 13952 i32.store offset=8 - i32.const 13696 + i32.const 13952 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13776 + local.get $5 + i32.const 14032 i32.store offset=4 - local.get $7 - i32.const 13776 + local.get $9 + i32.const 14032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 13856 + i32.const 14112 i32.store offset=8 - i32.const 13856 + i32.const 14112 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 13936 + local.get $5 + i32.const 14192 i32.store offset=4 - local.get $7 - i32.const 13936 + local.get $9 + i32.const 14192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14016 + i32.const 14272 i32.store offset=8 - i32.const 14016 + i32.const 14272 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14176 + local.get $5 + i32.const 14432 i32.store offset=4 - local.get $7 - i32.const 14176 + local.get $9 + i32.const 14432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 14016 - i32.store offset=8 - i32.const 14016 - call $~lib/string/String#toLowerCase - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14336 - i32.store offset=4 - local.get $7 - i32.const 14336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6896 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 14496 - i32.store offset=8 - i32.const 14496 - call $~lib/string/String#toUpperCase - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14528 - i32.store offset=4 - local.get $7 - i32.const 14528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6896 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 14560 + i32.const 14272 i32.store offset=8 - i32.const 14560 + i32.const 14272 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 14592 i32.store offset=4 - local.get $7 + local.get $9 i32.const 14592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 14624 - i32.store offset=8 - i32.const 14624 - call $~lib/string/String#toUpperCase - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 14832 - i32.store offset=4 - local.get $7 - i32.const 14832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6896 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 14496 - i32.store offset=12 - i32.const 14496 - call $~lib/string/String#toUpperCase - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $7 - call $~lib/string/String#toLowerCase - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15040 - i32.store offset=4 - local.get $7 - i32.const 15040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6896 - i32.const 42 + i32.const 7024 + i32.const 32 i32.const 1 call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 15072 - i32.store offset=12 - i32.const 15072 - call $~lib/string/String#toUpperCase - local.set $7 + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $7 + i32.const 14752 i32.store offset=8 - local.get $7 - call $~lib/string/String#toLowerCase - local.set $7 + i32.const 14752 + call $~lib/string/String#toUpperCase + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15104 + local.get $5 + i32.const 14784 i32.store offset=4 - local.get $7 - i32.const 15104 + local.get $9 + i32.const 14784 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 43 + i32.const 7024 + i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15136 - i32.store offset=12 - i32.const 15136 - call $~lib/string/String#toUpperCase - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 + i32.const 14816 i32.store offset=8 - local.get $7 + i32.const 14816 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15136 + local.get $5 + i32.const 14848 i32.store offset=4 - local.get $7 - i32.const 15136 + local.get $9 + i32.const 14848 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 44 + i32.const 7024 + i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 65536 - call $~lib/string/String.fromCodePoint - local.set $7 global.get $~lib/memory/__stack_pointer - local.get $7 + i32.const 14880 i32.store offset=8 - local.get $7 - call $~lib/string/String#toLowerCase - local.set $7 + i32.const 14880 + call $~lib/string/String#toUpperCase + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15392 + local.get $5 + i32.const 15088 i32.store offset=4 - local.get $7 - i32.const 15392 + local.get $9 + i32.const 15088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 50 + i32.const 7024 + i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 65536 - call $~lib/string/String.fromCodePoint - local.set $7 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $7 + i32.const 14752 + i32.store offset=12 + i32.const 14752 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/string/String#toLowerCase + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 15392 + local.tee $5 + local.get $9 + i32.store + local.get $5 + i32.const 15296 i32.store offset=4 - local.get $7 - i32.const 15392 + local.get $9 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 51 + i32.const 7024 + i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15424 + i32.const 15328 + i32.store offset=12 + i32.const 15328 + call $~lib/string/String#toUpperCase + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 i32.store offset=8 - i32.const 15424 + local.get $9 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15456 + local.get $5 + i32.const 15360 i32.store offset=4 - local.get $7 - i32.const 15456 + local.get $9 + i32.const 15360 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 54 + i32.const 7024 + i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15488 + i32.const 15392 + i32.store offset=12 + i32.const 15392 + call $~lib/string/String#toUpperCase + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 i32.store offset=8 - i32.const 15488 + local.get $9 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15520 + local.get $5 + i32.const 15392 i32.store offset=4 - local.get $7 - i32.const 15520 + local.get $9 + i32.const 15392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 55 + i32.const 7024 + i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 65536 + call $~lib/string/String.fromCodePoint + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 15552 + local.get $9 i32.store offset=8 - i32.const 15552 + local.get $9 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15584 + local.get $5 + i32.const 15648 i32.store offset=4 - local.get $7 - i32.const 15584 + local.get $9 + i32.const 15648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 56 + i32.const 7024 + i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 65536 + call $~lib/string/String.fromCodePoint + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 15616 + local.get $9 i32.store offset=8 - i32.const 15616 - call $~lib/string/String#toLowerCase - local.set $7 + local.get $9 + call $~lib/string/String#toUpperCase + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 15648 i32.store offset=4 - local.get $7 + local.get $9 i32.const 15648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 59 + i32.const 7024 + i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable @@ -4027,21 +4797,22 @@ i32.store offset=8 i32.const 15680 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 15712 i32.store offset=4 - local.get $7 + local.get $9 i32.const 15712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 60 + i32.const 7024 + i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable @@ -4051,21 +4822,22 @@ i32.store offset=8 i32.const 15744 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 15776 i32.store offset=4 - local.get $7 + local.get $9 i32.const 15776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 61 + i32.const 7024 + i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable @@ -4075,21 +4847,22 @@ i32.store offset=8 i32.const 15808 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 15840 i32.store offset=4 - local.get $7 + local.get $9 i32.const 15840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 62 + i32.const 7024 + i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable @@ -4099,21 +4872,22 @@ i32.store offset=8 i32.const 15872 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 15904 i32.store offset=4 - local.get $7 + local.get $9 i32.const 15904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 63 + i32.const 7024 + i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable @@ -4123,21 +4897,22 @@ i32.store offset=8 i32.const 15936 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 15968 i32.store offset=4 - local.get $7 + local.get $9 i32.const 15968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 64 + i32.const 7024 + i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable @@ -4147,21 +4922,22 @@ i32.store offset=8 i32.const 16000 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16032 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 65 + i32.const 7024 + i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable @@ -4171,21 +4947,22 @@ i32.store offset=8 i32.const 16064 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16096 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 66 + i32.const 7024 + i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable @@ -4195,21 +4972,22 @@ i32.store offset=8 i32.const 16128 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16160 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 67 + i32.const 7024 + i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable @@ -4219,21 +4997,22 @@ i32.store offset=8 i32.const 16192 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16224 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 68 + i32.const 7024 + i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable @@ -4243,21 +5022,22 @@ i32.store offset=8 i32.const 16256 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16288 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 69 + i32.const 7024 + i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable @@ -4267,21 +5047,22 @@ i32.store offset=8 i32.const 16320 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16352 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 70 + i32.const 7024 + i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable @@ -4291,21 +5072,22 @@ i32.store offset=8 i32.const 16384 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16416 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 72 + i32.const 7024 + i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable @@ -4315,21 +5097,22 @@ i32.store offset=8 i32.const 16448 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16480 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 73 + i32.const 7024 + i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable @@ -4339,21 +5122,22 @@ i32.store offset=8 i32.const 16512 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16544 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 74 + i32.const 7024 + i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable @@ -4363,21 +5147,22 @@ i32.store offset=8 i32.const 16576 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16608 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 75 + i32.const 7024 + i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable @@ -4387,21 +5172,22 @@ i32.store offset=8 i32.const 16640 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16672 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 78 + i32.const 7024 + i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable @@ -4411,21 +5197,22 @@ i32.store offset=8 i32.const 16704 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16736 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 79 + i32.const 7024 + i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable @@ -4435,21 +5222,22 @@ i32.store offset=8 i32.const 16768 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 16800 i32.store offset=4 - local.get $7 + local.get $9 i32.const 16800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 - i32.const 80 + i32.const 7024 + i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable @@ -4459,725 +5247,939 @@ i32.store offset=8 i32.const 16832 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 16864 + i32.store offset=4 + local.get $9 i32.const 16864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16896 + i32.store offset=8 + i32.const 16896 + call $~lib/string/String#toLowerCase + local.set $9 + global.get $~lib/memory/__stack_pointer + local.tee $5 + local.get $9 + i32.store + local.get $5 + i32.const 16928 + i32.store offset=4 + local.get $9 + i32.const 16928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16960 + i32.store offset=8 + i32.const 16960 + call $~lib/string/String#toLowerCase + local.set $9 + global.get $~lib/memory/__stack_pointer + local.tee $5 + local.get $9 + i32.store + local.get $5 + i32.const 16992 + i32.store offset=4 + local.get $9 + i32.const 16992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 17024 + i32.store offset=8 + i32.const 17024 + call $~lib/string/String#toLowerCase + local.set $9 + global.get $~lib/memory/__stack_pointer + local.tee $5 + local.get $9 + i32.store + local.get $5 + i32.const 17056 + i32.store offset=4 + local.get $9 + i32.const 17056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 17088 + i32.store offset=8 + i32.const 17088 + call $~lib/string/String#toLowerCase + local.set $9 + global.get $~lib/memory/__stack_pointer + local.tee $5 + local.get $9 + i32.store + local.get $5 + i32.const 17120 i32.store offset=4 - local.get $7 - i32.const 16864 + local.get $9 + i32.const 17120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16896 + i32.const 17152 i32.store offset=8 - i32.const 16896 + i32.const 17152 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16928 + local.get $5 + i32.const 17184 i32.store offset=4 - local.get $7 - i32.const 16928 + local.get $9 + i32.const 17184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16960 + i32.const 17216 i32.store offset=8 - i32.const 16960 + i32.const 17216 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16992 + local.get $5 + i32.const 17248 i32.store offset=4 - local.get $7 - i32.const 16992 + local.get $9 + i32.const 17248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17024 + i32.const 17280 i32.store offset=8 - i32.const 17024 + i32.const 17280 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16096 + local.get $5 + i32.const 16352 i32.store offset=4 - local.get $7 - i32.const 16096 + local.get $9 + i32.const 16352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17056 + i32.const 17312 i32.store offset=8 - i32.const 17056 + i32.const 17312 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17088 + local.get $5 + i32.const 17344 i32.store offset=4 - local.get $7 - i32.const 17088 + local.get $9 + i32.const 17344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17120 + i32.const 17376 i32.store offset=8 - i32.const 17120 + i32.const 17376 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17152 + local.get $5 + i32.const 17408 i32.store offset=4 - local.get $7 - i32.const 17152 + local.get $9 + i32.const 17408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17184 + i32.const 17440 i32.store offset=8 - i32.const 17184 + i32.const 17440 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17216 + local.get $5 + i32.const 17472 i32.store offset=4 - local.get $7 - i32.const 17216 + local.get $9 + i32.const 17472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17248 + i32.const 17504 i32.store offset=8 - i32.const 17248 + i32.const 17504 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17280 + local.get $5 + i32.const 17536 i32.store offset=4 - local.get $7 - i32.const 17280 + local.get $9 + i32.const 17536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17312 + i32.const 17568 i32.store offset=8 - i32.const 17312 + i32.const 17568 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17344 + local.get $5 + i32.const 17600 i32.store offset=4 - local.get $7 - i32.const 17344 + local.get $9 + i32.const 17600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17376 + i32.const 17632 i32.store offset=8 - i32.const 17376 + i32.const 17632 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17408 + local.get $5 + i32.const 17664 i32.store offset=4 - local.get $7 - i32.const 17408 + local.get $9 + i32.const 17664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17440 + i32.const 17696 i32.store offset=8 - i32.const 17440 + i32.const 17696 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17472 + local.get $5 + i32.const 17728 i32.store offset=4 - local.get $7 - i32.const 17472 + local.get $9 + i32.const 17728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17504 + i32.const 17760 i32.store offset=8 - i32.const 17504 + i32.const 17760 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17536 + local.get $5 + i32.const 17792 i32.store offset=4 - local.get $7 - i32.const 17536 + local.get $9 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17568 + i32.const 17824 i32.store offset=8 - i32.const 17568 + i32.const 17824 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17600 + local.get $5 + i32.const 17856 i32.store offset=4 - local.get $7 - i32.const 17600 + local.get $9 + i32.const 17856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17632 + i32.const 17888 i32.store offset=8 - i32.const 17632 + i32.const 17888 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17664 + local.get $5 + i32.const 17920 i32.store offset=4 - local.get $7 - i32.const 17664 + local.get $9 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17696 + i32.const 17952 i32.store offset=8 - i32.const 17696 + i32.const 17952 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17728 + local.get $5 + i32.const 17984 i32.store offset=4 - local.get $7 - i32.const 17728 + local.get $9 + i32.const 17984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17760 + i32.const 18016 i32.store offset=8 - i32.const 17760 + i32.const 18016 call $~lib/string/String#toLowerCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17792 + local.get $5 + i32.const 18048 i32.store offset=4 - local.get $7 - i32.const 17792 + local.get $9 + i32.const 18048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17824 + i32.const 18080 i32.store offset=8 - i32.const 17824 + i32.const 18080 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17856 + local.get $5 + i32.const 18112 i32.store offset=4 - local.get $7 - i32.const 17856 + local.get $9 + i32.const 18112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15072 + i32.const 15328 i32.store offset=8 - i32.const 15072 + i32.const 15328 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17888 + local.get $5 + i32.const 18144 i32.store offset=4 - local.get $7 - i32.const 17888 + local.get $9 + i32.const 18144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17920 + i32.const 18176 i32.store offset=8 - i32.const 17920 + i32.const 18176 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17952 + local.get $5 + i32.const 18208 i32.store offset=4 - local.get $7 - i32.const 17952 + local.get $9 + i32.const 18208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 17984 + i32.const 18240 i32.store offset=8 - i32.const 17984 + i32.const 18240 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18016 + local.get $5 + i32.const 18272 i32.store offset=4 - local.get $7 - i32.const 18016 + local.get $9 + i32.const 18272 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18048 + i32.const 18304 i32.store offset=8 - i32.const 18048 + i32.const 18304 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18080 + local.get $5 + i32.const 18336 i32.store offset=4 - local.get $7 - i32.const 18080 + local.get $9 + i32.const 18336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18112 + i32.const 18368 i32.store offset=8 - i32.const 18112 + i32.const 18368 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18144 + local.get $5 + i32.const 18400 i32.store offset=4 - local.get $7 - i32.const 18144 + local.get $9 + i32.const 18400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18176 + i32.const 18432 i32.store offset=8 - i32.const 18176 + i32.const 18432 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18144 + local.get $5 + i32.const 18400 i32.store offset=4 - local.get $7 - i32.const 18144 + local.get $9 + i32.const 18400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18208 + i32.const 18464 i32.store offset=8 - i32.const 18208 + i32.const 18464 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18240 + local.get $5 + i32.const 18496 i32.store offset=4 - local.get $7 - i32.const 18240 + local.get $9 + i32.const 18496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18272 + i32.const 18528 i32.store offset=8 - i32.const 18272 + i32.const 18528 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18304 + local.get $5 + i32.const 18560 i32.store offset=4 - local.get $7 - i32.const 18304 + local.get $9 + i32.const 18560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18336 + i32.const 18592 i32.store offset=8 - i32.const 18336 + i32.const 18592 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18368 + local.get $5 + i32.const 18624 i32.store offset=4 - local.get $7 - i32.const 18368 + local.get $9 + i32.const 18624 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18400 + i32.const 18656 i32.store offset=8 - i32.const 18400 + i32.const 18656 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18432 + local.get $5 + i32.const 18688 i32.store offset=4 - local.get $7 - i32.const 18432 + local.get $9 + i32.const 18688 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18464 + i32.const 18720 i32.store offset=8 - i32.const 18464 + i32.const 18720 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18496 + local.get $5 + i32.const 18752 i32.store offset=4 - local.get $7 - i32.const 18496 + local.get $9 + i32.const 18752 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 18528 + i32.const 18784 i32.store offset=8 - i32.const 18528 + i32.const 18784 call $~lib/string/String#toUpperCase - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.tee $5 + local.get $9 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18560 + local.get $5 + i32.const 18816 i32.store offset=4 - local.get $7 - i32.const 18560 + local.get $9 + i32.const 18816 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + i32.const 7024 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end loop $for-loop|0 - local.get $6 + local.get $8 i32.const 1114111 i32.le_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 call $~lib/string/String.fromCodePoint - local.tee $5 + local.tee $9 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 call $~lib/string/String#toLowerCase - local.tee $7 + local.tee $5 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 call $~lib/string/String#toUpperCase - local.tee $5 + local.tee $4 i32.store offset=24 - local.get $7 - i32.const 0 - call $~lib/string/String#codePointAt + block $__inlined_func$~lib/string/String#codePointAt + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $9 + i32.eqz + if + i32.const -1 + local.set $9 + br $__inlined_func$~lib/string/String#codePointAt + end + i32.const 1 + local.get $9 + i32.const 1 + i32.eq + local.get $5 + i32.load16_u + local.tee $9 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + select + br_if $__inlined_func$~lib/string/String#codePointAt + local.get $5 + i32.load16_u offset=2 + local.tee $7 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $__inlined_func$~lib/string/String#codePointAt + local.get $7 + local.get $9 + i32.const 10 + i32.shl + i32.add + i32.const 56613888 + i32.sub + local.set $9 + end + local.get $9 i64.extend_i32_s local.set $0 - local.get $7 - i32.const 1 - call $~lib/string/String#codePointAt + block $__inlined_func$~lib/string/String#codePointAt0 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $9 + i32.const 1 + i32.le_u + if + i32.const -1 + local.set $9 + br $__inlined_func$~lib/string/String#codePointAt0 + end + i32.const 1 + local.get $9 + i32.const 2 + i32.eq + local.get $5 + i32.load16_u offset=2 + local.tee $9 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + select + br_if $__inlined_func$~lib/string/String#codePointAt0 + local.get $5 + i32.load16_u offset=4 + local.tee $7 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $__inlined_func$~lib/string/String#codePointAt0 + local.get $7 + local.get $9 + i32.const 10 + i32.shl + i32.add + i32.const 56613888 + i32.sub + local.set $9 + end + local.get $9 i64.extend_i32_s local.tee $3 i64.const 0 @@ -5190,9 +6192,52 @@ i64.add local.set $0 end - local.get $7 - i32.const 2 - call $~lib/string/String#codePointAt + block $__inlined_func$~lib/string/String#codePointAt1 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $9 + i32.const 2 + i32.le_u + if + i32.const -1 + local.set $9 + br $__inlined_func$~lib/string/String#codePointAt1 + end + i32.const 1 + local.get $9 + i32.const 3 + i32.eq + local.get $5 + i32.load16_u offset=4 + local.tee $9 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + select + br_if $__inlined_func$~lib/string/String#codePointAt1 + local.get $5 + i32.load16_u offset=6 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $__inlined_func$~lib/string/String#codePointAt1 + local.get $5 + local.get $9 + i32.const 10 + i32.shl + i32.add + i32.const 56613888 + i32.sub + local.set $9 + end + local.get $9 i64.extend_i32_s local.tee $3 i64.const 0 @@ -5205,14 +6250,100 @@ i64.add local.set $0 end - local.get $5 - i32.const 0 - call $~lib/string/String#codePointAt + block $__inlined_func$~lib/string/String#codePointAt2 + local.get $4 + local.tee $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $9 + i32.eqz + if + i32.const -1 + local.set $9 + br $__inlined_func$~lib/string/String#codePointAt2 + end + i32.const 1 + local.get $9 + i32.const 1 + i32.eq + local.get $5 + i32.load16_u + local.tee $9 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + select + br_if $__inlined_func$~lib/string/String#codePointAt2 + local.get $5 + i32.load16_u offset=2 + local.tee $4 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $__inlined_func$~lib/string/String#codePointAt2 + local.get $4 + local.get $9 + i32.const 10 + i32.shl + i32.add + i32.const 56613888 + i32.sub + local.set $9 + end + local.get $9 i64.extend_i32_s local.set $3 - local.get $5 - i32.const 1 - call $~lib/string/String#codePointAt + block $__inlined_func$~lib/string/String#codePointAt3 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $9 + i32.const 1 + i32.le_u + if + i32.const -1 + local.set $9 + br $__inlined_func$~lib/string/String#codePointAt3 + end + i32.const 1 + local.get $9 + i32.const 2 + i32.eq + local.get $5 + i32.load16_u offset=2 + local.tee $9 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + select + br_if $__inlined_func$~lib/string/String#codePointAt3 + local.get $5 + i32.load16_u offset=4 + local.tee $4 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $__inlined_func$~lib/string/String#codePointAt3 + local.get $4 + local.get $9 + i32.const 10 + i32.shl + i32.add + i32.const 56613888 + i32.sub + local.set $9 + end + local.get $9 i64.extend_i32_s local.tee $2 i64.const 0 @@ -5225,9 +6356,52 @@ i64.add local.set $3 end - local.get $5 - i32.const 2 - call $~lib/string/String#codePointAt + block $__inlined_func$~lib/string/String#codePointAt4 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $9 + i32.const 2 + i32.le_u + if + i32.const -1 + local.set $9 + br $__inlined_func$~lib/string/String#codePointAt4 + end + i32.const 1 + local.get $9 + i32.const 3 + i32.eq + local.get $5 + i32.load16_u offset=4 + local.tee $9 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + select + br_if $__inlined_func$~lib/string/String#codePointAt4 + local.get $5 + i32.load16_u offset=6 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $__inlined_func$~lib/string/String#codePointAt4 + local.get $5 + local.get $9 + i32.const 10 + i32.shl + i32.add + i32.const 56613888 + i32.sub + local.set $9 + end + local.get $9 i64.extend_i32_s local.tee $2 i64.const 0 @@ -5240,12 +6414,12 @@ i64.add local.set $3 end - local.get $6 + local.get $8 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s local.set $2 - local.get $6 + local.get $8 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s @@ -5260,7 +6434,7 @@ i64.add local.set $2 end - local.get $6 + local.get $8 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s @@ -5275,36 +6449,36 @@ i64.add local.set $2 end - local.get $6 + local.get $8 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s local.set $1 - local.get $6 + local.get $8 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $4 + local.tee $6 i64.const 0 i64.ge_s if local.get $1 - local.get $4 + local.get $6 i64.const 16 i64.shl i64.add local.set $1 end - local.get $6 + local.get $8 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $4 + local.tee $6 i64.const 0 i64.ge_s if local.get $1 - local.get $4 + local.get $6 i64.const 32 i64.shl i64.add @@ -5315,11 +6489,11 @@ i64.ne if global.get $~lib/memory/__stack_pointer - i32.const 18592 + i32.const 18848 i32.store - i32.const 18592 + i32.const 18848 i32.const 1 - local.get $6 + local.get $8 f64.convert_i32_s f64.const 0 f64.const 0 @@ -5327,22 +6501,22 @@ f64.const 0 call $~lib/builtins/trace global.get $~lib/memory/__stack_pointer - i32.const 18688 + i32.const 18944 i32.store offset=4 local.get $0 call $~lib/util/number/itoa64 - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store offset=8 - i32.const 18688 - local.get $7 + i32.const 18944 + local.get $9 call $~lib/string/String.__concat - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store - local.get $7 + local.get $9 i32.const 0 f64.const 0 f64.const 0 @@ -5351,22 +6525,22 @@ f64.const 0 call $~lib/builtins/trace global.get $~lib/memory/__stack_pointer - i32.const 19072 + i32.const 20784 i32.store offset=4 local.get $2 call $~lib/util/number/itoa64 - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store offset=8 - i32.const 19072 - local.get $7 + i32.const 20784 + local.get $9 call $~lib/string/String.__concat - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store - local.get $7 + local.get $9 i32.const 0 f64.const 0 f64.const 0 @@ -5380,11 +6554,11 @@ i64.ne if global.get $~lib/memory/__stack_pointer - i32.const 19136 + i32.const 20848 i32.store - i32.const 19136 + i32.const 20848 i32.const 1 - local.get $6 + local.get $8 f64.convert_i32_s f64.const 0 f64.const 0 @@ -5392,22 +6566,22 @@ f64.const 0 call $~lib/builtins/trace global.get $~lib/memory/__stack_pointer - i32.const 19232 + i32.const 20944 i32.store offset=4 local.get $3 call $~lib/util/number/itoa64 - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store offset=8 - i32.const 19232 - local.get $7 + i32.const 20944 + local.get $9 call $~lib/string/String.__concat - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store - local.get $7 + local.get $9 i32.const 0 f64.const 0 f64.const 0 @@ -5416,22 +6590,22 @@ f64.const 0 call $~lib/builtins/trace global.get $~lib/memory/__stack_pointer - i32.const 19296 + i32.const 21008 i32.store offset=4 local.get $1 call $~lib/util/number/itoa64 - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store offset=8 - i32.const 19296 - local.get $7 + i32.const 21008 + local.get $9 call $~lib/string/String.__concat - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store - local.get $7 + local.get $9 i32.const 0 f64.const 0 f64.const 0 @@ -5440,10 +6614,10 @@ f64.const 0 call $~lib/builtins/trace end - local.get $6 + local.get $8 i32.const 1 i32.add - local.set $6 + local.set $8 br $for-loop|0 end end @@ -5467,7 +6641,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -5544,7 +6728,7 @@ i32.const 1023 i32.and local.get $1 - local.tee $3 + local.tee $2 i32.const 1023 i32.and i32.const 10 @@ -5561,7 +6745,7 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $2 local.get $7 i32.const 16 i32.shl @@ -5608,10 +6792,10 @@ if (result i32) block $~lib/util/string/isFinalSigma|inlined.0 (result i32) i32.const 0 - local.set $2 + local.set $3 i32.const 0 local.get $4 - local.tee $3 + local.tee $2 i32.const 30 i32.sub local.tee $1 @@ -5621,19 +6805,21 @@ select local.set $9 loop $while-continue|1 - local.get $3 + local.get $2 local.get $9 i32.gt_s if - i32.const -1 + local.get $2 local.set $1 + i32.const -1 + local.set $2 block $~lib/util/string/codePointBefore|inlined.0 - local.get $3 + local.get $1 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 local.get $0 - local.get $3 + local.get $1 i32.const 1 i32.sub i32.const 1 @@ -5645,7 +6831,7 @@ i32.and i32.const 56320 i32.eq - local.get $3 + local.get $1 i32.const 2 i32.sub i32.const 0 @@ -5656,7 +6842,7 @@ i32.const 1023 i32.and local.get $0 - local.get $3 + local.get $1 i32.const 2 i32.sub i32.const 1 @@ -5671,7 +6857,7 @@ i32.add i32.const 65536 i32.add - local.set $1 + local.set $2 local.get $10 i32.const 64512 i32.and @@ -5687,28 +6873,68 @@ i32.const 55296 i32.eq select - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.const 918000 i32.lt_u if (result i32) - i32.const 6956 - local.get $1 - call $~lib/util/string/stagedBinaryLookup + local.get $2 + i32.const 8 + i32.shr_u + i32.const 7212 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 7212 + i32.add + local.get $2 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $2 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and else i32.const 0 end i32.eqz if i32.const 0 - local.get $1 + local.get $2 i32.const 127370 i32.lt_u if (result i32) - i32.const 9964 - local.get $1 - call $~lib/util/string/stagedBinaryLookup + local.get $2 + i32.const 8 + i32.shr_u + i32.const 10220 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 10220 + i32.add + local.get $2 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $2 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and else i32.const 0 end @@ -5716,28 +6942,28 @@ br_if $~lib/util/string/isFinalSigma|inlined.0 drop i32.const 1 - local.set $2 + local.set $3 end - local.get $3 local.get $1 + local.get $2 i32.const 65536 i32.ge_s i32.const 1 i32.add i32.sub - local.set $3 + local.set $2 br $while-continue|1 end end i32.const 0 - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/string/isFinalSigma|inlined.0 drop local.get $4 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 30 i32.add local.tee $1 @@ -5746,14 +6972,14 @@ local.get $8 i32.lt_s select - local.set $2 + local.set $3 loop $while-continue|2 local.get $2 local.get $3 - i32.gt_s + i32.lt_s if local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -5764,14 +6990,14 @@ i32.const 55296 i32.eq local.get $8 - local.get $3 + local.get $2 i32.const 1 i32.add i32.ne i32.and if local.get $0 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -5796,9 +7022,29 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 6956 local.get $1 - call $~lib/util/string/stagedBinaryLookup + i32.const 8 + i32.shr_u + i32.const 7212 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 7212 + i32.add + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $1 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and else i32.const 0 end @@ -5808,23 +7054,43 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 9964 local.get $1 - call $~lib/util/string/stagedBinaryLookup + i32.const 8 + i32.shr_u + i32.const 10220 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 10220 + i32.add + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $1 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and else i32.const 0 end i32.eqz br $~lib/util/string/isFinalSigma|inlined.0 end - local.get $3 + local.get $2 local.get $1 i32.const 65536 i32.ge_u i32.const 1 i32.add i32.add - local.set $3 + local.set $2 br $while-continue|2 end end @@ -5857,7 +7123,7 @@ call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.tee $3 + local.tee $2 i32.const 65536 i32.lt_u if @@ -5866,7 +7132,7 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $2 i32.store16 else local.get $6 @@ -5874,15 +7140,15 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $2 i32.const 65536 i32.sub - local.tee $3 + local.tee $2 i32.const 10 i32.shr_u i32.const 55296 i32.or - local.get $3 + local.get $2 i32.const 1023 i32.and i32.const 56320 @@ -5907,14 +7173,9 @@ i32.shl i32.add local.get $1 - local.get $1 - i32.const 65 - i32.sub - i32.const 26 - i32.lt_u - i32.const 5 - i32.shl - i32.or + i32.const 7084 + i32.add + i32.load8_u i32.store16 end local.get $4 @@ -5945,7 +7206,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -5954,7 +7225,7 @@ i32.gt_u if i32.const 0 - i32.const 15344 + i32.const 15600 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -6007,11 +7278,22 @@ (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 - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -6022,7 +7304,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 18944 + i32.const 19200 return end i64.const 0 @@ -6040,161 +7322,217 @@ i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $4 local.get $0 i32.wrap_i64 + local.tee $3 local.tee $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $1 - i32.const 100 - i32.lt_u - select - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $1 - i32.const 10000000 - i32.lt_u - select - local.get $1 i32.const 100000 i32.lt_u - select + 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 $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - loop $do-continue|0 - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 - end + local.get $1 + local.get $3 + local.get $2 + call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $4 - 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 - 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 - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - 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 - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select local.get $0 i64.const 1000000000000000 i64.lt_u - select + 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 $4 i32.add local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - loop $do-continue|00 - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 + loop $while-continue|0 local.get $0 - i64.const 10 - i64.div_u - local.tee $0 - i64.const 0 - i64.ne - br_if $do-continue|00 + i64.const 100000000 + i64.ge_u + if + local.get $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i64.const 100000000 + i64.div_u + local.tee $0 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $5 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $5 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end + local.get $1 + local.get $0 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut end local.get $4 if - local.get $3 + local.get $1 i32.const 45 i32.store16 end @@ -6202,6 +7540,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 ) ) diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 443bb457ba..969bf769bc 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1,12 +1,12 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) (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_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result 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))) (memory $0 1) @@ -60,15 +60,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38764)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -116,170 +107,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1216 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 38764 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 38764 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1216 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 22352 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 22356 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 22352 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 22356 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -567,12 +542,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -926,7 +901,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -989,7 +969,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1069,7 +1054,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 38764 i32.ge_u if @@ -1079,19 +1064,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1108,11 +1093,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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,10 +1110,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1146,28 +1136,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1264,11 +1254,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1279,50 +1338,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1330,18 +1393,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1349,18 +1412,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1372,7 +1435,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1385,12 +1448,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1404,54 +1467,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1461,125 +1524,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1587,7 +1689,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1620,1577 +1722,2391 @@ end end end + local.get $2 ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 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 + (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 - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + local.get $0 + i32.const 3 + i32.and + i32.eqz if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 local.get $2 - call $~lib/rt/itcms/step + i32.const 16 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 + br $while-continue|1 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 i32.add - global.set $~lib/rt/itcms/threshold + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/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 $0 - local.get $1 - i32.lt_u + i32.const 4 + i32.and if + local.get $0 local.get $1 - i32.const 7 - i32.and + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 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 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u 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/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.eqz - i32.const 1 - local.get $0 - select - 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.eqz - i32.const 0 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 local.get $3 i32.const 8 - i32.add - local.set $3 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add local.set $1 local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $3 - i32.load16_u - local.tee $2 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if + i32.const 16 + i32.add + local.set $0 local.get $2 - local.get $4 + i32.const 16 i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - 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 - i32.const 0 - end - i32.eqz - ) - (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $4 - local.get $1 - i32.const 0 - i32.ne - local.set $2 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - block $while-break|0 - local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if (result i32) - local.get $1 - local.get $3 - i32.eqz - i32.and - br_if $while-break|0 - local.get $2 - i32.const 1 - i32.add - else - local.get $3 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $2 - i32.const 2 - i32.add - else - local.get $4 - local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $0 - i32.load16_u offset=2 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $2 - i32.const 3 - i32.add - end + local.set $2 + br $while-continue|5 end - local.set $2 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 end end end local.get $2 - ) - (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $2 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - local.get $0 - 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 $4 - local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $2 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - 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 $5 - 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 $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 + i32.const 16 + i32.and if + local.get $0 local.get $1 - i32.const 0 + i32.load8_u i32.store8 - end - ) - (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.get $1 - call $~lib/string/String.UTF8.decodeUnsafe - ) - (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 + i32.const 1 + i32.add local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - unreachable - ) - (func $~start - call $start:std/string-encoding - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 22380 - i32.lt_s - if - i32.const 38784 - i32.const 38832 + local.get $1 i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - 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 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne + local.get $2 + i32.const 8 + i32.and if - i32.const 0 - i32.const 1088 - i32.const 20 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - i32.load8_u offset=5 + local.get $2 + i32.const 4 + i32.and 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) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - 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.const 1088 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $1 local.get $2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1584 - i32.store offset=8 - local.get $0 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store offset=8 - local.get $0 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz + i32.and if - i32.const 0 - i32.const 1088 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=8 - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz + local.get $2 + i32.const 1 + i32.and if - i32.const 0 - i32.const 1088 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1680 - i32.store offset=8 - local.get $0 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if + ) + (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 - i32.const 1088 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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/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.const 12 - i32.add - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1552 - i32.store offset=8 + i32.eq + if + i32.const 1 + return + end local.get $1 - i32.const 1552 - call $~lib/string/String.__eq i32.eqz + i32.const 1 + local.get $0 + select if i32.const 0 - i32.const 1088 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/string-encoding/testUTF8Encode - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.encode - 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 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 - ) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 i32.const 1 - call $~lib/string/String.UTF8.encode - local.tee $0 - i32.store offset=4 - local.get $0 + i32.shr_u + local.tee $4 + local.get $1 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.const 1 + i32.shr_u i32.ne if i32.const 0 - i32.const 1088 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - local.get $0 - i32.load8_u offset=3 - i32.const 183 - i32.ne - if + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.set $2 + local.get $1 + local.set $3 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + loop $do-continue|0 + local.get $2 + i64.load + local.get $3 + 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 $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + local.get $2 + i32.load16_u + local.tee $1 + local.get $3 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $1 + 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 + br $while-continue|1 + end + end i32.const 0 - i32.const 1088 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable end + i32.eqz + ) + (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) 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.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $4 + local.get $1 + i32.const 0 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 + local.set $2 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + block $while-break|0 + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.eqz + i32.and + br_if $while-break|0 + local.get $2 + i32.const 1 + i32.add + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $2 + i32.const 2 + i32.add + else + local.get $4 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $0 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $2 + i32.const 3 + i32.add + end + end + local.set $2 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end 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 + local.get $2 + ) + (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 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + unreachable ) - (func $std/string-encoding/testUTF8DecodeNullTerminated + (func $~start (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 22380 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1088 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.store offset=12 - i32.const 1760 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22380 + 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 1052 + i32.load + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 8 + 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 + memory.size + i32.const 16 + i32.shl + i32.const 38764 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + 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 22380 + 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 + 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 + 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.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 + 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 22380 + 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 0 + i32.store offset=8 + 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 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + 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 33 + 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 22380 + 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 0 + i32.store offset=8 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + local.set $2 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $1 + i32.store + local.get $3 + 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 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + 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 1056 + i32.store offset=8 + local.get $1 + 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 $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 + if + i32.const 0 + i32.const 1088 + i32.const 44 + 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.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 + if + i32.const 0 + i32.const 1088 + i32.const 45 + 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 + if + i32.const 0 + i32.const 1088 + i32.const 46 + 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 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1680 + i32.store offset=8 + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + i32.add + i32.const 0 + 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 1552 + i32.store offset=8 + local.get $0 + 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 + 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 22380 + 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 22380 + 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 + local.get $0 + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.encode + 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 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 22380 + 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 + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode + 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 22380 + 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 0 + i32.store offset=8 + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $0 + i32.store offset=4 + 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.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 97 + 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 22380 + 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 0 - i32.const 1088 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.const 1 - call $~lib/string/String.UTF8.encode - 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.store offset=24 + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode + 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 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store offset=12 + i32.const 1760 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + 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 1760 + i32.const 1 + call $~lib/string/String.UTF8.encode + 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 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store offset=20 + i32.const 1808 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 109 + 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 1808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1760 i32.const 0 - i32.const 1088 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1808 - i32.store offset=20 - i32.const 1808 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if + call $~lib/string/String.UTF8.encode + 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 1808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 112 + 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 1872 + i32.store + i32.const 1872 + call $std/string-encoding/testLarge + global.get $~lib/memory/__stack_pointer + i32.const 14992 + i32.store + i32.const 14992 + call $std/string-encoding/testLarge + global.get $~lib/rt/itcms/state i32.const 0 - i32.const 1088 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 end - local.get $0 + i32.const 38784 + i32.const 38832 i32.const 1 - call $~lib/string/String.UTF8.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $0 - i32.store offset=24 - local.get $0 i32.const 1 - call $~lib/string/String.UTF8.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 112 - 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 $~lib/builtins/abort + unreachable ) (func $std/string-encoding/testUTF8DecodeUnsafe (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 - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 22380 + i32.lt_s + if + i32.const 38784 + i32.const 38832 + 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 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1056 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1056 i32.const 1 call $~lib/string/String.UTF8.encode @@ -3209,9 +4125,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1552 i32.store offset=8 local.get $0 @@ -3232,9 +4149,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1056 i32.store offset=8 local.get $0 @@ -3255,9 +4173,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1584 i32.store offset=8 local.get $0 @@ -3280,9 +4199,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1648 i32.store offset=8 local.get $0 @@ -3305,9 +4225,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1680 i32.store offset=8 local.get $0 @@ -3330,9 +4251,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1552 i32.store offset=8 local.get $0 @@ -3355,9 +4277,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1840 i32.store offset=8 local.get $0 @@ -3380,9 +4303,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1680 i32.store offset=8 local.get $0 @@ -3405,9 +4329,10 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $0 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1552 i32.store offset=8 local.get $1 @@ -3433,22 +4358,37 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 22380 + i32.lt_s + if + i32.const 38784 + i32.const 38832 + 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 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.const 0 call $~lib/string/String.UTF8.encode local.tee $1 i32.store local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 0 - call $~lib/string/String.UTF8.decode + call $~lib/string/String.UTF8.decodeUnsafe local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -3497,266 +4437,33 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $start:std/string-encoding - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1052 - i32.load - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 8 - 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 - memory.size - i32.const 16 - i32.shl - i32.const 38764 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1264 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1296 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1440 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $std/string-encoding/testUTF16Encode - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 33 - 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 - call $std/string-encoding/testUTF16DecodeUnsafe - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 + (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8Encode - call $std/string-encoding/testUTF8EncodeNullTerminated - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz + i32.const 22380 + i32.lt_s if - i32.const 0 - i32.const 1088 - i32.const 97 - i32.const 3 + i32.const 38784 + i32.const 38832 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8DecodeNullTerminated - call $std/string-encoding/testUTF8DecodeUnsafe - global.get $~lib/memory/__stack_pointer - i32.const 1872 - i32.store - i32.const 1872 - call $std/string-encoding/testLarge - global.get $~lib/memory/__stack_pointer - i32.const 14992 - i32.store - i32.const 14992 - call $std/string-encoding/testLarge - global.get $~lib/rt/itcms/state - 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 - ) - (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.const 20 i32.sub + local.tee $2 i32.load offset=16 i32.const 0 call $~lib/rt/itcms/__new @@ -3764,9 +4471,7 @@ i32.store local.get $1 local.get $0 - local.get $0 - i32.const 20 - i32.sub + local.get $2 i32.load offset=16 i32.const 1 i32.shr_u @@ -3785,11 +4490,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 22380 + i32.lt_s + if + i32.const 38784 + i32.const 38832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 i32.const -2 i32.and @@ -3810,37 +4526,218 @@ ) (func $~lib/string/String.UTF8.encode (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 22380 + i32.lt_s + if + i32.const 38784 + i32.const 38832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + 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 $2 + local.tee $3 i32.store local.get $0 - local.get $0 + local.tee $2 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u + i32.const 1 + i32.shl local.get $2 + i32.add + local.set $6 + local.get $3 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $6 + i32.lt_u + if + local.get $2 + i32.load16_u + local.tee $4 + i32.const 128 + i32.lt_u + if (result i32) + local.get $0 + local.get $4 + i32.store8 + local.get $0 + i32.const 1 + i32.add + else + local.get $4 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $0 + local.get $4 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $4 + 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 $6 + local.get $2 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $4 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $2 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $0 + local.get $4 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $5 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $5 + 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 $5 + 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 $5 + 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 $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + local.get $4 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $4 + 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 $4 + 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 $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|0 + end + end local.get $1 - call $~lib/string/String.UTF8.encodeUnsafe + if + local.get $0 + i32.const 0 + i32.store8 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -3852,15 +4749,27 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 22380 + i32.lt_s + if + i32.const 38784 + i32.const 38832 + 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 - local.get $0 + local.tee $3 local.get $1 i32.add - local.tee $5 + local.set $5 + local.get $3 + local.get $5 i32.gt_u if i32.const 0 @@ -3876,40 +4785,40 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $0 i32.store - local.get $3 + local.get $0 local.set $1 loop $while-continue|0 - local.get $0 + local.get $3 local.get $5 i32.lt_u if block $while-break|0 - local.get $0 + local.get $3 i32.load8_u local.set $4 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 local.get $4 i32.const 128 i32.and if - local.get $0 + local.get $3 local.get $5 i32.eq br_if $while-break|0 - local.get $0 + local.get $3 i32.load8_u i32.const 63 i32.and local.set $6 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 local.get $4 i32.const 224 i32.and @@ -3926,19 +4835,19 @@ i32.or i32.store16 else - local.get $0 + local.get $3 local.get $5 i32.eq br_if $while-break|0 - local.get $0 + local.get $3 i32.load8_u i32.const 63 i32.and local.set $7 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 local.get $4 i32.const 240 i32.and @@ -3958,11 +4867,11 @@ i32.or local.set $4 else - local.get $0 + local.get $3 local.get $5 i32.eq br_if $while-break|0 - local.get $0 + local.get $3 i32.load8_u i32.const 63 i32.and @@ -3981,10 +4890,10 @@ i32.or i32.or local.set $4 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 end local.get $4 i32.const 65536 @@ -4038,13 +4947,13 @@ end block $__inlined_func$~lib/rt/itcms/__renew local.get $1 - local.get $3 + local.get $0 i32.sub - local.tee $1 - local.get $3 + local.tee $2 + local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -4052,33 +4961,33 @@ i32.sub i32.le_u if + local.get $3 local.get $2 - local.get $1 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $1 local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $0 - local.get $3 - local.get $1 + local.tee $1 + local.get $0 local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 - local.get $1 + local.tee $0 + local.get $0 local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $0 - local.set $3 + local.get $1 + local.set $0 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $0 ) ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 4337cdb1a0..3809c7b61a 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -2,17 +2,16 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 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))) (type $none_=>_i32 (func (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) (type $none_=>_i64 (func (result i64))) @@ -628,295 +627,298 @@ (data (i32.const 15624) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") (data (i32.const 15740) "<") (data (i32.const 15752) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 15804) "\\") - (data (i32.const 15816) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 15900) "\1c") - (data (i32.const 15912) "\01\00\00\00\02\00\00\008") - (data (i32.const 15932) "\1c") - (data (i32.const 15944) "\01\00\00\00\04\00\00\001\002") - (data (i32.const 15964) "\1c") - (data (i32.const 15976) "\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 15996) "\1c") - (data (i32.const 16008) "\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 16028) "\1c") - (data (i32.const 16040) "\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 16060) ",") - (data (i32.const 16072) "\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 16108) ",") - (data (i32.const 16120) "\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 16156) ",") - (data (i32.const 16168) "\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008") - (data (i32.const 16204) ",") - (data (i32.const 16216) "\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") - (data (i32.const 16252) ",") - (data (i32.const 16264) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 16300) ",") - (data (i32.const 16312) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 16348) ",") - (data (i32.const 16360) "\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 16396) "\1c") - (data (i32.const 16408) "\01\00\00\00\04\00\00\00-\001") - (data (i32.const 16428) "\1c") - (data (i32.const 16440) "\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 16460) ",") - (data (i32.const 16472) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 16508) ",") - (data (i32.const 16520) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 16556) "\1c") - (data (i32.const 16568) "\01\00\00\00\04\00\00\007\00b") - (data (i32.const 16588) "\1c") - (data (i32.const 16600) "\01\00\00\00\06\00\00\004\00d\002") - (data (i32.const 16620) "\1c") - (data (i32.const 16632) "\01\00\00\00\08\00\00\003\000\003\009") - (data (i32.const 16652) "\1c") - (data (i32.const 16664) "\01\00\00\00\n\00\00\001\00e\002\004\000") - (data (i32.const 16684) "\1c") - (data (i32.const 16696) "\01\00\00\00\0c\00\00\001\000\00f\004\004\007") - (data (i32.const 16716) "\1c") - (data (i32.const 16728) "\01\00\00\00\0c\00\00\001\002\00d\006\008\007") - (data (i32.const 16748) "\1c") - (data (i32.const 16760) "\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e") - (data (i32.const 16780) ",") - (data (i32.const 16792) "\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") - (data (i32.const 16828) ",") - (data (i32.const 16840) "\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e") - (data (i32.const 16876) ",") - (data (i32.const 16888) "\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 16924) ",") - (data (i32.const 16936) "\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000") - (data (i32.const 16972) ",") - (data (i32.const 16984) "\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 17020) ",") - (data (i32.const 17032) "\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 17068) ",") - (data (i32.const 17080) "\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 17116) ",") - (data (i32.const 17128) "\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000") - (data (i32.const 17164) "\1c") - (data (i32.const 17176) "\01\00\00\00\06\00\00\001\001\001") - (data (i32.const 17196) "\1c") - (data (i32.const 17208) "\01\00\00\00\08\00\00\001\001\001\000") - (data (i32.const 17228) "\1c") - (data (i32.const 17240) "\01\00\00\00\n\00\00\001\001\001\000\001") - (data (i32.const 17260) "\1c") - (data (i32.const 17272) "\01\00\00\00\0c\00\00\001\001\001\000\001\001") - (data (i32.const 17292) ",") - (data (i32.const 17304) "\01\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 17340) "L") - (data (i32.const 17352) "\01\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 17420) "\\") - (data (i32.const 17432) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000") - (data (i32.const 17516) "\\") - (data (i32.const 17528) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000") - (data (i32.const 17612) "\\") - (data (i32.const 17624) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000") - (data (i32.const 17708) "\\") - (data (i32.const 17720) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 15804) "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") + (data (i32.const 16204) "\1c\04") + (data (i32.const 16216) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 17260) "\\") + (data (i32.const 17272) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data (i32.const 17356) "\1c") + (data (i32.const 17368) "\01\00\00\00\02\00\00\008") + (data (i32.const 17388) "\1c") + (data (i32.const 17400) "\01\00\00\00\04\00\00\001\002") + (data (i32.const 17420) "\1c") + (data (i32.const 17432) "\01\00\00\00\n\00\00\00-\001\000\000\000") + (data (i32.const 17452) "\1c") + (data (i32.const 17464) "\01\00\00\00\n\00\00\001\002\003\004\005") + (data (i32.const 17484) "\1c") + (data (i32.const 17496) "\01\00\00\00\0c\00\00\001\002\003\004\005\006") + (data (i32.const 17516) ",") + (data (i32.const 17528) "\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") + (data (i32.const 17564) ",") + (data (i32.const 17576) "\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") + (data (i32.const 17612) ",") + (data (i32.const 17624) "\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008") + (data (i32.const 17660) ",") + (data (i32.const 17672) "\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") + (data (i32.const 17708) ",") + (data (i32.const 17720) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") + (data (i32.const 17756) ",") + (data (i32.const 17768) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") (data (i32.const 17804) ",") - (data (i32.const 17816) "\01\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 17852) "<") - (data (i32.const 17864) "\01\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000") - (data (i32.const 17916) "<") - (data (i32.const 17928) "\01\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data (i32.const 17980) ",") - (data (i32.const 17992) "\01\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000") - (data (i32.const 18028) ",") - (data (i32.const 18040) "\01\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007") - (data (i32.const 18076) ",") - (data (i32.const 18088) "\01\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003") - (data (i32.const 18124) ",") - (data (i32.const 18136) "\01\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000") - (data (i32.const 18172) ",") - (data (i32.const 18184) "\01\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000") - (data (i32.const 18220) ",") - (data (i32.const 18232) "\01\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003") - (data (i32.const 18268) ",") - (data (i32.const 18280) "\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l") - (data (i32.const 18316) ",") - (data (i32.const 18328) "\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v") - (data (i32.const 18364) ",") - (data (i32.const 18376) "\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003") - (data (i32.const 18412) ",") - (data (i32.const 18424) "\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 18460) ",") - (data (i32.const 18472) "\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 18508) ",") - (data (i32.const 18520) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007") - (data (i32.const 18556) ",") - (data (i32.const 18568) "\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 18604) ",") - (data (i32.const 18616) "\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 18652) ",") - (data (i32.const 18664) "\01\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000") - (data (i32.const 18700) ",") - (data (i32.const 18712) "\01\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001") - (data (i32.const 18748) "<") - (data (i32.const 18760) "\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 18812) "<") - (data (i32.const 18824) "\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 18876) "<") - (data (i32.const 18888) "\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 18940) "<") - (data (i32.const 18952) "\01\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 19004) "<") - (data (i32.const 19016) "\01\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 19068) "<") - (data (i32.const 19080) "\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 19132) "\1c") - (data (i32.const 19144) "\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 19164) ",") - (data (i32.const 19176) "\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 19212) ",") - (data (i32.const 19224) "\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 17816) "\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 17852) "\1c") + (data (i32.const 17864) "\01\00\00\00\04\00\00\00-\001") + (data (i32.const 17884) "\1c") + (data (i32.const 17896) "\01\00\00\00\08\00\00\001\000\000\000") + (data (i32.const 17916) ",") + (data (i32.const 17928) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 17964) ",") + (data (i32.const 17976) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") + (data (i32.const 18012) "\1c") + (data (i32.const 18024) "\01\00\00\00\04\00\00\007\00b") + (data (i32.const 18044) "\1c") + (data (i32.const 18056) "\01\00\00\00\06\00\00\004\00d\002") + (data (i32.const 18076) "\1c") + (data (i32.const 18088) "\01\00\00\00\08\00\00\003\000\003\009") + (data (i32.const 18108) "\1c") + (data (i32.const 18120) "\01\00\00\00\n\00\00\001\00e\002\004\000") + (data (i32.const 18140) "\1c") + (data (i32.const 18152) "\01\00\00\00\0c\00\00\001\000\00f\004\004\007") + (data (i32.const 18172) "\1c") + (data (i32.const 18184) "\01\00\00\00\0c\00\00\001\002\00d\006\008\007") + (data (i32.const 18204) "\1c") + (data (i32.const 18216) "\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e") + (data (i32.const 18236) ",") + (data (i32.const 18248) "\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") + (data (i32.const 18284) ",") + (data (i32.const 18296) "\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e") + (data (i32.const 18332) ",") + (data (i32.const 18344) "\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 18380) ",") + (data (i32.const 18392) "\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000") + (data (i32.const 18428) ",") + (data (i32.const 18440) "\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 18476) ",") + (data (i32.const 18488) "\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 18524) ",") + (data (i32.const 18536) "\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f") + (data (i32.const 18572) ",") + (data (i32.const 18584) "\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000") + (data (i32.const 18620) "\1c") + (data (i32.const 18632) "\01\00\00\00\06\00\00\001\001\001") + (data (i32.const 18652) "\1c") + (data (i32.const 18664) "\01\00\00\00\08\00\00\001\001\001\000") + (data (i32.const 18684) "\1c") + (data (i32.const 18696) "\01\00\00\00\n\00\00\001\001\001\000\001") + (data (i32.const 18716) "\1c") + (data (i32.const 18728) "\01\00\00\00\0c\00\00\001\001\001\000\001\001") + (data (i32.const 18748) ",") + (data (i32.const 18760) "\01\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 18796) "L") + (data (i32.const 18808) "\01\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data (i32.const 18876) "\\") + (data (i32.const 18888) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000") + (data (i32.const 18972) "\\") + (data (i32.const 18984) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000") + (data (i32.const 19068) "\\") + (data (i32.const 19080) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000") + (data (i32.const 19164) "\\") + (data (i32.const 19176) "\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") (data (i32.const 19260) ",") - (data (i32.const 19272) "\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 19272) "\01\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001") (data (i32.const 19308) "<") - (data (i32.const 19320) "\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 19320) "\01\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000") (data (i32.const 19372) "<") - (data (i32.const 19384) "\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 19436) "<") - (data (i32.const 19448) "\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 19500) "<") - (data (i32.const 19512) "\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 19564) ",") - (data (i32.const 19576) "\01\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 19612) ",") - (data (i32.const 19624) "\01\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data (i32.const 19660) ",") - (data (i32.const 19672) "\01\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data (i32.const 19708) ",") - (data (i32.const 19720) "\01\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 19756) ",") - (data (i32.const 19768) "\01\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 19804) "<") - (data (i32.const 19816) "\01\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 19868) "<") - (data (i32.const 19880) "\01\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000") - (data (i32.const 19932) "<") - (data (i32.const 19944) "\01\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 19996) "<") - (data (i32.const 20008) "\01\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 20060) "<") - (data (i32.const 20072) "\01\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 20124) "<") - (data (i32.const 20136) "\01\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data (i32.const 20188) "|") - (data (i32.const 20200) "\01\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 20316) "\9c") - (data (i32.const 20328) "\01\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 20476) "\\") - (data (i32.const 20488) "\01\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 20572) "l") - (data (i32.const 20584) "\01\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000") - (data (i32.const 20684) "\\") - (data (i32.const 20696) "\01\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data (i32.const 20780) "L") - (data (i32.const 20792) "\01\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000") - (data (i32.const 20860) "<") - (data (i32.const 20872) "\01\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007") - (data (i32.const 20924) "<") - (data (i32.const 20936) "\01\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004") - (data (i32.const 20988) "<") - (data (i32.const 21000) "\01\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000") - (data (i32.const 21052) "<") - (data (i32.const 21064) "\01\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000") - (data (i32.const 21116) "<") - (data (i32.const 21128) "\01\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f") - (data (i32.const 21180) ",") - (data (i32.const 21192) "\01\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o") - (data (i32.const 21228) ",") - (data (i32.const 21240) "\01\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v") - (data (i32.const 21276) ",") - (data (i32.const 21288) "\01\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f") - (data (i32.const 21324) "\1c") - (data (i32.const 21336) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 21356) ",") - (data (i32.const 21368) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 21464) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local $3 i32) @@ -3337,8 +4052,68 @@ i32.load16_u local.set $2 loop $while-continue|0 - local.get $2 - call $~lib/util/string/isSpace + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $2 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $2 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $2 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + i32.const 1 + local.get $2 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $2 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end if local.get $0 i32.const 2 @@ -3529,25 +4304,27 @@ i32.const 48 i32.sub else - local.get $2 - i32.const 55 - i32.sub - local.get $2 - i32.const 87 - i32.sub - local.get $2 - local.get $2 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select local.get $2 i32.const 65 i32.sub i32.const 25 i32.le_u - select + if (result i32) + local.get $2 + i32.const 55 + i32.sub + else + local.get $2 + i32.const 87 + i32.sub + local.get $2 + local.get $2 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end end local.tee $2 i32.le_u @@ -3609,8 +4386,68 @@ i32.load16_u local.set $0 loop $while-continue|0 - local.get $0 - call $~lib/util/string/isSpace + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $0 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $0 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $0 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + i32.const 1 + local.get $0 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $0 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end if local.get $5 i32.const 2 @@ -3752,25 +4589,27 @@ i32.const 48 i32.sub else - local.get $0 - i32.const 55 - i32.sub - local.get $0 - i32.const 87 - i32.sub - local.get $0 - local.get $0 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select local.get $0 i32.const 65 i32.sub i32.const 25 i32.le_u - select + if (result i32) + local.get $0 + i32.const 55 + i32.sub + else + local.get $0 + i32.const 87 + i32.sub + local.get $0 + local.get $0 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end end local.tee $0 i32.le_u @@ -3824,8 +4663,68 @@ i32.load16_u local.set $0 loop $while-continue|0 - local.get $0 - call $~lib/util/string/isSpace + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $0 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $0 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $0 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + i32.const 1 + local.get $0 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $0 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $0 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end if local.get $5 i32.const 2 @@ -3967,25 +4866,27 @@ i32.const 48 i32.sub else - local.get $0 - i32.const 55 - i32.sub - local.get $0 - i32.const 87 - i32.sub - local.get $0 - local.get $0 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select local.get $0 i32.const 65 i32.sub i32.const 25 i32.le_u - select + if (result i32) + local.get $0 + i32.const 55 + i32.sub + else + local.get $0 + i32.const 87 + i32.sub + local.get $0 + local.get $0 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end end local.tee $0 i32.le_u @@ -4025,7 +4926,129 @@ local.set $1 i32.const 1 local.set $2 - loop $while-continue|0 + local.get $0 + i32.const 0 + i32.le_s + if + local.get $0 + i32.eqz + return + else + local.get $0 + i32.const 1 + i32.eq + if + i32.const 5 + return + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 25 + return + else + local.get $0 + i32.const 32 + i32.lt_s + if + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 31 + local.get $0 + i32.clz + i32.sub + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + i32.const 5 + i32.const 1 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + i32.const 25 + local.set $1 + end + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + local.get $1 + local.get $1 + i32.mul + local.set $1 + end + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + local.get $1 + local.get $1 + i32.mul + local.set $1 + end + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + local.get $1 + local.get $1 + i32.mul + local.set $1 + end + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + end + local.get $2 + return + end + end + end + end + loop $while-continue|1 local.get $0 if local.get $1 @@ -4045,7 +5068,7 @@ local.get $1 i32.mul local.set $1 - br $while-continue|0 + br $while-continue|1 end end local.get $2 @@ -4132,15 +5155,15 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) (local $8 i64) (local $9 i64) - (local $10 f64) + (local $10 i64) (local $11 f64) - (local $12 i32) - (local $13 i64) + (local $12 f64) + (local $13 i32) (local $14 i64) block $folding-inner0 local.get $0 @@ -4149,19 +5172,79 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $6 + local.tee $7 i32.eqz br_if $folding-inner0 local.get $0 i32.load16_u - local.set $7 + local.set $5 f64.const 1 - local.set $11 + local.set $12 loop $while-continue|0 - local.get $6 + local.get $7 if (result i32) - local.get $7 - call $~lib/util/string/isSpace + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $5 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $5 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $5 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + i32.const 1 + local.get $5 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $5 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $5 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $5 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $5 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $5 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $5 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $5 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end else i32.const 0 end @@ -4171,43 +5254,43 @@ i32.add local.tee $0 i32.load16_u - local.set $7 - local.get $6 + local.set $5 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $while-continue|0 end end - local.get $6 + local.get $7 i32.eqz br_if $folding-inner0 - local.get $7 + local.get $5 i32.const 45 i32.eq if (result i32) - local.get $6 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.eqz br_if $folding-inner0 f64.const -1 - local.set $11 + local.set $12 local.get $0 i32.const 2 i32.add local.tee $0 i32.load16_u else - local.get $7 + local.get $5 i32.const 43 i32.eq if (result i32) - local.get $6 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.eqz br_if $folding-inner0 local.get $0 @@ -4216,14 +5299,14 @@ local.tee $0 i32.load16_u else - local.get $7 + local.get $5 end end - local.tee $7 + local.tee $5 i32.const 73 i32.eq i32.const 0 - local.get $6 + local.get $7 i32.const 8 i32.ge_s select @@ -4241,20 +5324,20 @@ i32.const 0 end if - local.get $11 + local.get $12 f64.const inf f64.mul return end br $folding-inner0 end - local.get $7 + local.get $5 i32.const 48 i32.sub i32.const 10 i32.ge_u i32.const 0 - local.get $7 + local.get $5 i32.const 46 i32.ne select @@ -4262,7 +5345,7 @@ local.get $0 local.set $2 loop $while-continue|1 - local.get $7 + local.get $5 i32.const 48 i32.eq if @@ -4271,22 +5354,22 @@ i32.add local.tee $0 i32.load16_u - local.set $7 - local.get $6 + local.set $5 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $while-continue|1 end end - local.get $6 + local.get $7 i32.const 0 i32.le_s if f64.const 0 return end - local.get $7 + local.get $5 i32.const 46 i32.eq if @@ -4300,25 +5383,25 @@ local.set $0 i32.const 0 local.get $2 - local.get $6 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 select br_if $folding-inner0 i32.const 1 - local.set $12 + local.set $13 loop $for-loop|2 local.get $0 i32.load16_u - local.tee $7 + local.tee $5 i32.const 48 i32.eq if - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 local.get $3 i32.const 1 i32.sub @@ -4330,14 +5413,14 @@ br $for-loop|2 end end - local.get $6 + local.get $7 i32.const 0 i32.le_s if f64.const 0 return end - local.get $7 + local.get $5 i32.const 48 i32.sub i32.const 10 @@ -4350,16 +5433,16 @@ select br_if $folding-inner0 end - local.get $7 + local.get $5 i32.const 48 i32.sub local.set $2 loop $for-loop|3 i32.const 1 - local.get $12 + local.get $13 i32.eqz i32.const 0 - local.get $7 + local.get $5 i32.const 46 i32.eq select @@ -4373,23 +5456,25 @@ i32.const 10 i32.lt_u if - local.get $2 - i64.extend_i32_u - local.get $5 - i64.const 10 - i64.mul - i64.add - local.get $5 - local.get $2 - i32.eqz - i32.eqz - i64.extend_i32_u - i64.or local.get $1 i32.const 19 i32.lt_s - select - local.set $5 + if (result i64) + local.get $2 + i64.extend_i32_u + local.get $6 + i64.const 10 + i64.mul + i64.add + else + local.get $6 + local.get $2 + i32.eqz + i32.eqz + i64.extend_i32_u + i64.or + end + local.set $6 local.get $1 i32.const 1 i32.add @@ -4398,12 +5483,12 @@ local.get $1 local.set $3 i32.const 1 - local.set $12 + local.set $13 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.eqz br_if $for-break3 local.get $0 @@ -4411,7 +5496,7 @@ i32.add local.tee $0 i32.load16_u - local.tee $7 + local.tee $5 i32.const 48 i32.sub local.set $2 @@ -4424,7 +5509,7 @@ i32.const 1 local.get $3 local.get $1 - local.get $12 + local.get $13 select i32.const 19 local.get $1 @@ -4446,7 +5531,7 @@ br_if $~lib/util/string/parseExp|inlined.0 drop i32.const 0 - local.get $6 + local.get $7 i32.const 1 i32.sub local.tee $2 @@ -4571,7 +5656,7 @@ local.tee $0 i32.const -342 i32.lt_s - local.get $5 + local.get $6 i64.eqz select br_if $~lib/util/string/scientific|inlined.0 @@ -4582,9 +5667,9 @@ i32.gt_s br_if $~lib/util/string/scientific|inlined.0 drop - local.get $5 + local.get $6 f64.convert_i64_u - local.tee $10 + local.tee $11 local.get $0 i32.eqz br_if $~lib/util/string/scientific|inlined.0 @@ -4598,7 +5683,7 @@ i32.gt_s select if - local.get $10 + local.get $11 local.get $0 i32.const 3 i32.shl @@ -4606,20 +5691,20 @@ i32.add f64.load f64.mul - local.set $10 + local.set $11 i32.const 22 local.set $0 end - local.get $5 + local.get $6 i64.const 9007199254740991 i64.le_u if (result i32) local.get $0 i32.const 31 i32.shr_s - local.tee $7 + local.tee $5 local.get $0 - local.get $7 + local.get $5 i32.add i32.xor i32.const 22 @@ -4632,7 +5717,7 @@ i32.const 0 i32.gt_s if - local.get $10 + local.get $11 local.get $0 i32.const 3 i32.shl @@ -4642,7 +5727,7 @@ f64.mul br $~lib/util/string/scientific|inlined.0 end - local.get $10 + local.get $11 i32.const 0 local.get $0 i32.sub @@ -4657,12 +5742,12 @@ i32.const 0 i32.lt_s if (result f64) - local.get $5 - local.get $5 + local.get $6 + local.get $6 i64.clz local.tee $8 i64.shl - local.set $5 + local.set $6 local.get $0 local.tee $1 i64.extend_i32_s @@ -4674,13 +5759,13 @@ i32.const -14 i32.le_s if - local.get $5 + local.get $6 i64.const 6103515625 i64.rem_u - local.get $5 + local.get $6 i64.const 6103515625 i64.div_u - local.tee $5 + local.tee $6 i64.clz local.tee $9 i64.const 18 @@ -4691,11 +5776,11 @@ f64.mul f64.nearest i64.trunc_f64_u - local.get $5 + local.get $6 local.get $9 i64.shl i64.add - local.set $5 + local.set $6 local.get $8 local.get $9 i64.sub @@ -4707,19 +5792,19 @@ br $for-loop|6 end end - local.get $5 + local.get $6 i32.const 0 local.get $1 i32.sub call $~lib/math/ipow32 i64.extend_i32_s - local.tee $13 + local.tee $10 i64.div_u local.tee $14 i64.clz local.set $9 - local.get $5 - local.get $13 + local.get $6 + local.get $10 i64.rem_u f64.convert_i64_u i64.reinterpret_f64 @@ -4728,7 +5813,7 @@ i64.shl i64.add f64.reinterpret_i64 - local.get $13 + local.get $10 f64.convert_i64_u f64.div i64.trunc_f64_u @@ -4743,12 +5828,12 @@ i32.wrap_i64 call $~lib/math/NativeMath.scalbn else - local.get $5 - local.get $5 + local.get $6 + local.get $6 i64.ctz local.tee $8 i64.shr_u - local.set $5 + local.set $6 local.get $8 local.get $0 local.tee $4 @@ -4761,52 +5846,50 @@ i32.ge_s if i64.const 32 - local.get $5 + local.get $6 i64.const 32 i64.shr_u i64.const 1220703125 i64.mul - local.get $5 + local.get $6 i64.const 4294967295 i64.and i64.const 1220703125 i64.mul - local.tee $5 + local.tee $6 i64.const 32 i64.shr_u i64.add - local.tee $8 + local.tee $9 i64.const 32 i64.shr_u i32.wrap_i64 i32.clz - local.tee $0 i64.extend_i32_u + local.tee $8 i64.sub - local.tee $9 + local.tee $10 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift - local.get $5 - local.get $0 - i64.extend_i32_u + local.get $6 + local.get $8 i64.shl i64.const 31 i64.shr_u i64.const 1 i64.and + local.get $9 local.get $8 - local.get $0 - i64.extend_i32_u i64.shl - local.get $5 + local.get $6 i64.const 4294967295 i64.and - local.get $9 + local.get $10 i64.shr_u i64.or i64.add - local.set $5 + local.set $6 local.get $4 i32.const 13 i32.sub @@ -4816,17 +5899,16 @@ end local.get $4 call $~lib/math/ipow32 - local.tee $0 i64.extend_i32_u - local.get $5 + local.tee $9 + local.get $6 i64.const 4294967295 i64.and i64.mul local.set $8 i64.const 32 - local.get $0 - i64.extend_i32_u - local.get $5 + local.get $9 + local.get $6 i64.const 32 i64.shr_u i64.mul @@ -4834,34 +5916,32 @@ i64.const 32 i64.shr_u i64.add - local.tee $5 + local.tee $9 i64.const 32 i64.shr_u i32.wrap_i64 i32.clz - local.tee $0 i64.extend_i32_u + local.tee $6 i64.sub - local.tee $9 + local.tee $10 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift local.get $8 - local.get $0 - i64.extend_i32_u + local.get $6 i64.shl i64.const 31 i64.shr_u i64.const 1 i64.and - local.get $5 - local.get $0 - i64.extend_i32_u + local.get $9 + local.get $6 i64.shl local.get $8 i64.const 4294967295 i64.and - local.get $9 + local.get $10 i64.shr_u i64.or i64.add @@ -4872,7 +5952,7 @@ end end end - local.get $11 + local.get $12 f64.copysign return end @@ -5090,184 +6170,123 @@ end local.get $0 i32.load offset=4 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 - i32.store offset=12 - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u + local.get $6 + i32.const 2 + i32.shl i32.add + local.get $1 + i32.store local.get $0 - i32.const 10000000 - i32.lt_u - select + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link local.get $0 - i32.const 100000 - i32.lt_u - select + local.get $3 + i32.store offset=12 ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + (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 + 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 15804 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 15804 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 local.get $2 - i32.const 1 + i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i32.const 10 + i32.const 100 i32.rem_u - i32.const 48 + i32.const 2 + i32.shl + i32.const 15804 i32.add - i32.store16 + i32.load + i32.store local.get $1 - i32.const 10 + i32.const 100 i32.div_u - local.tee $1 - br_if $do-continue|0 + local.set $1 end - ) - (func $~lib/util/number/utoa_hex_simple (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 + local.get $1 + i32.const 10 + i32.ge_u + if local.get $0 local.get $2 - i32.const 1 + i32.const 2 i32.sub - local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i32.const 15 - i32.and - i32.const 48 - i32.or - local.tee $3 - i32.const 39 - i32.const 0 - local.get $3 - i32.const 57 - i32.gt_u - select + i32.const 2 + i32.shl + i32.const 15804 i32.add - i32.store16 - local.get $1 - i32.const 4 - i32.shr_u - local.tee $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i64) - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 + i32.load + i32.store + else local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz + local.get $2 + i32.const 1 i32.sub - i32.div_u i32.const 1 + i32.shl i32.add - return - end - local.get $1 - i64.extend_i32_s - local.tee $3 - local.set $2 - i32.const 1 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $2 - i64.ge_u - if - local.get $0 - local.get $2 - i64.div_u - local.set $0 - local.get $2 - local.get $2 - i64.mul - local.set $2 - local.get $1 - i32.const 1 - i32.shl - local.set $1 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|1 - end + local.get $1 + i32.const 48 + i32.add + i32.store16 end - local.get $1 - i32.const 1 - i32.sub ) (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) (local $4 i64) @@ -5301,7 +6320,7 @@ i32.wrap_i64 i32.const 1 i32.shl - i32.const 15824 + i32.const 17280 i32.add i32.load16_u i32.store16 @@ -5336,7 +6355,7 @@ i32.wrap_i64 i32.const 1 i32.shl - i32.const 15824 + i32.const 17280 i32.add i32.load16_u i32.store16 @@ -5350,111 +6369,93 @@ end end ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (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 - 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 - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - 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 - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 - local.get $1 - i64.const 10 - i64.div_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (func $~lib/util/number/utoa_hex_simple (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 15 - i64.and - i64.const 48 - i64.or - local.tee $3 - i64.const 39 - i64.const 0 - local.get $3 - i64.const 57 - i64.gt_u - select - i64.add - i64.store16 + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 local.get $1 - i64.const 4 - i64.shr_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 + i64.const 100000000 + i64.ge_u + if + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 15804 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 15804 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + 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 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 15804 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 15804 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut ) (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) (local $6 i64) @@ -5474,6 +6475,7 @@ i32.sub local.tee $9 i64.extend_i32_s + local.tee $0 i64.shl local.tee $10 i64.const 1 @@ -5482,12 +6484,57 @@ i64.and local.set $6 local.get $2 - local.get $9 - i64.extend_i32_s + local.get $0 i64.shr_u i32.wrap_i64 local.tee $1 - call $~lib/util/number/decimalCount32 + local.set $3 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end local.set $7 loop $while-continue|0 local.get $7 @@ -5617,7 +6664,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 21408 + i32.const 22864 i32.add local.get $3 i32.const 65535 @@ -5652,7 +6699,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 22336 + i32.const 23792 i32.add i64.load32_u local.get $9 @@ -5662,28 +6709,12 @@ local.get $5 i32.const 1 i32.shl - i32.const 21406 + i32.const 22862 i32.add - local.tee $3 + local.tee $7 i32.load16_u - local.set $1 + local.set $3 loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $0 - i64.sub - local.get $0 - local.get $2 - i64.add - local.tee $6 - local.get $8 - i64.sub - i64.gt_u - local.get $6 - local.get $8 - i64.lt_u - select - i32.const 0 local.get $2 local.get $4 local.get $0 @@ -5694,12 +6725,30 @@ local.get $8 i64.lt_u select - select + if (result i32) + i32.const 1 + local.get $8 + local.get $0 + i64.sub + local.get $0 + local.get $2 + i64.add + local.tee $6 + local.get $8 + i64.sub + i64.gt_u + local.get $6 + local.get $8 + i64.lt_u + select + else + i32.const 0 + end if - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 + local.set $3 local.get $0 local.get $2 i64.add @@ -5707,8 +6756,8 @@ br $while-continue|3 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 return @@ -5740,7 +6789,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 21408 + i32.const 22864 i32.add local.get $6 i32.wrap_i64 @@ -5778,7 +6827,7 @@ i32.sub i32.const 2 i32.shl - i32.const 22336 + i32.const 23792 i32.add i64.load32_u i64.mul @@ -5786,28 +6835,12 @@ local.get $5 i32.const 1 i32.shl - i32.const 21406 + i32.const 22862 i32.add - local.tee $3 + local.tee $7 i32.load16_u - local.set $1 + local.set $3 loop $while-continue|6 - i32.const 1 - local.get $2 - local.get $0 - i64.sub - local.get $0 - local.get $10 - i64.add - local.tee $6 - local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $6 - i64.gt_u - select - i32.const 0 local.get $10 local.get $4 local.get $0 @@ -5818,12 +6851,30 @@ local.get $2 i64.lt_u select - select + if (result i32) + i32.const 1 + local.get $2 + local.get $0 + i64.sub + local.get $0 + local.get $10 + i64.add + local.tee $6 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $6 + i64.gt_u + select + else + i32.const 0 + end if - local.get $1 + local.get $3 i32.const 1 i32.sub - local.set $1 + local.set $3 local.get $0 local.get $10 i64.add @@ -5831,13 +6882,16 @@ br $while-continue|6 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $2 i32.eqz if @@ -5856,18 +6910,18 @@ local.get $1 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 21 i32.le_s i32.const 0 local.get $1 - local.get $3 + local.get $4 i32.le_s select if (result i32) loop $for-loop|0 local.get $1 - local.get $3 + local.get $4 i32.lt_s if local.get $0 @@ -5885,27 +6939,27 @@ end end local.get $0 - local.get $3 + local.get $4 i32.const 1 i32.shl i32.add i32.const 3145774 i32.store - local.get $3 + local.get $4 i32.const 2 i32.add else - local.get $3 + local.get $4 i32.const 21 i32.le_s i32.const 0 - local.get $3 + local.get $4 i32.const 0 i32.gt_s select if (result i32) local.get $0 - local.get $3 + local.get $4 i32.const 1 i32.shl i32.add @@ -5926,20 +6980,20 @@ i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 0 i32.le_s i32.const 0 - local.get $3 + local.get $4 i32.const -6 i32.gt_s select if (result i32) local.get $0 i32.const 2 - local.get $3 + local.get $4 i32.sub - local.tee $3 + local.tee $5 i32.const 1 i32.shl i32.add @@ -5955,7 +7009,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $3 + local.get $5 i32.lt_s if local.get $0 @@ -5973,7 +7027,7 @@ end end local.get $1 - local.get $3 + local.get $5 i32.add else local.get $1 @@ -5984,10 +7038,10 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $1 + local.tee $3 i32.const 4 i32.add - local.get $3 + local.get $4 i32.const 1 i32.sub local.tee $0 @@ -6001,13 +7055,60 @@ local.set $0 end local.get $0 + 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.set $1 local.get $0 - call $~lib/util/number/decimalCount32 + local.get $1 i32.const 1 i32.add local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $3 i32.const 45 i32.const 43 local.get $2 @@ -6040,16 +7141,16 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $2 + local.tee $3 i32.const 4 i32.add - local.get $3 + local.get $4 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $5 if i32.const 0 local.get $0 @@ -6057,16 +7158,63 @@ local.set $0 end local.get $0 + 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 - call $~lib/util/number/decimalCount32 + local.get $2 i32.const 1 i32.add local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $3 i32.const 45 i32.const 43 - local.get $3 + local.get $5 select i32.store16 offset=4 local.get $0 @@ -6081,22 +7229,23 @@ ) (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) (local $1 i64) - (local $2 i32) + (local $2 i64) (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) (local $8 i32) - (local $9 i64) + (local $9 i32) (local $10 i64) (local $11 i64) + (local $12 i64) local.get $0 f64.const 0 f64.lt local.tee $8 if (result f64) - i32.const 21408 + i32.const 22864 i32.const 45 i32.store16 local.get $0 @@ -6105,19 +7254,19 @@ local.get $0 end i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 9218868437227405312 i64.and i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $7 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl - local.get $3 + local.get $2 i64.const 4503599627370495 i64.and i64.add @@ -6126,51 +7275,52 @@ i64.shl i64.const 1 i64.add - local.tee $3 + local.tee $2 i64.clz i32.wrap_i64 - local.set $2 - local.get $3 + local.set $4 local.get $2 + local.get $4 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $6 + local.get $7 i32.const 1 - local.get $6 + local.get $7 select i32.const 1075 i32.sub - local.tee $6 + local.tee $7 i32.const 1 i32.sub - local.get $2 + local.get $4 i32.sub - local.set $2 + local.set $4 local.get $1 local.get $1 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $7 + local.tee $5 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $6 local.get $7 + local.get $5 i32.sub - local.get $2 + local.get $4 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $2 + local.get $4 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp + local.tee $4 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -6179,9 +7329,9 @@ f64.add local.tee $0 i32.trunc_f64_s - local.tee $2 + local.tee $5 local.get $0 - local.get $2 + local.get $5 f64.convert_i32_s f64.ne i32.add @@ -6189,71 +7339,71 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $5 i32.const 3 i32.shl - local.tee $7 + local.tee $9 i32.sub global.set $~lib/util/number/_K - local.get $7 - i32.const 21464 + local.get $9 + i32.const 22920 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $2 + local.get $5 i32.const 1 i32.shl - i32.const 22160 + i32.const 23616 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $4 + local.tee $3 i64.const 32 i64.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i64.const 4294967295 i64.and - local.tee $4 + local.tee $3 global.get $~lib/util/number/_frc_plus - local.tee $5 + local.tee $6 i64.const 32 i64.shr_u - local.tee $10 + local.tee $11 i64.mul - local.get $4 - local.get $5 + local.get $3 + local.get $6 i64.const 4294967295 i64.and - local.tee $11 + local.tee $12 i64.mul i64.const 32 i64.shr_u i64.add - local.set $5 + local.set $6 local.get $8 i32.const 1 i32.shl - i32.const 21408 + i32.const 22864 i32.add - local.get $3 + local.get $2 local.get $1 local.get $1 i64.clz i32.wrap_i64 - local.tee $2 + local.tee $5 i64.extend_i32_s i64.shl local.tee $1 i64.const 32 i64.shr_u - local.tee $9 + local.tee $10 i64.mul - local.get $4 - local.get $9 + local.get $3 + local.get $10 i64.mul - local.get $4 + local.get $3 local.get $1 i64.const 4294967295 i64.and @@ -6262,14 +7412,14 @@ i64.const 32 i64.shr_u i64.add - local.tee $9 + local.tee $10 i64.const 32 i64.shr_u i64.add local.get $1 - local.get $3 + local.get $2 i64.mul - local.get $9 + local.get $10 i64.const 4294967295 i64.and i64.add @@ -6279,24 +7429,24 @@ i64.shr_u i64.add global.get $~lib/util/number/_exp_pow - local.tee $7 - local.get $6 - local.get $2 + local.tee $9 + local.get $7 + local.get $5 i32.sub i32.add i32.const -64 i32.sub - local.get $3 - local.get $10 + local.get $2 + local.get $11 i64.mul - local.get $5 + local.get $6 i64.const 32 i64.shr_u i64.add - local.get $3 - local.get $11 + local.get $2 + local.get $12 i64.mul - local.get $5 + local.get $6 i64.const 4294967295 i64.and i64.add @@ -6308,27 +7458,27 @@ i64.const 1 i64.sub local.tee $1 - local.get $7 - global.get $~lib/util/number/_exp + local.get $4 + local.get $9 i32.add i32.const -64 i32.sub local.get $1 - local.get $3 + local.get $2 global.get $~lib/util/number/_frc_minus local.tee $1 i64.const 32 i64.shr_u - local.tee $5 + local.tee $6 i64.mul - local.get $4 - local.get $5 + local.get $3 + local.get $6 i64.mul - local.get $4 + local.get $3 local.get $1 i64.const 4294967295 i64.and - local.tee $4 + local.tee $3 i64.mul i64.const 32 i64.shr_u @@ -6337,8 +7487,8 @@ i64.const 32 i64.shr_u i64.add + local.get $2 local.get $3 - local.get $4 i64.mul local.get $1 i64.const 4294967295 @@ -6436,19 +7586,6 @@ (func $~start call $start:std/string ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 24428 - i32.lt_s - if - i32.const 40832 - i32.const 40880 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -6462,14 +7599,25 @@ i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + 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 - global.get $~lib/memory/__stack_pointer + local.get $3 i64.const 0 i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $3 i64.const 0 i64.store offset=16 block $folding-inner2 @@ -6524,9 +7672,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 - local.set $8 - local.get $2 + local.tee $8 if local.get $3 i32.eqz @@ -6748,29 +7894,39 @@ (local $2 f64) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 f32) + (local $5 f32) global.get $~lib/memory/__stack_pointer i32.const 44 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + 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 - global.get $~lib/memory/__stack_pointer + local.get $0 i64.const 0 i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i64.const 0 i64.store offset=16 - global.get $~lib/memory/__stack_pointer + local.get $0 i64.const 0 i64.store offset=24 - global.get $~lib/memory/__stack_pointer + local.get $0 i64.const 0 i64.store offset=32 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=40 global.get $std/string/str @@ -6785,9 +7941,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1168 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1168 i32.store offset=4 i32.const 1168 @@ -6803,9 +7960,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1200 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1200 i32.store offset=4 i32.const 1200 @@ -6821,9 +7979,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1232 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1232 i32.store offset=4 i32.const 1232 @@ -6890,23 +8049,19 @@ global.get $std/string/str local.tee $1 i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - local.set $3 + i32.const -1 + local.set $0 block $__inlined_func$~lib/string/String#codePointAt - local.get $0 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 i32.const 1 i32.le_u - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/string/String#codePointAt - end + br_if $__inlined_func$~lib/string/String#codePointAt i32.const 1 local.get $3 i32.const 2 @@ -6951,19 +8106,34 @@ memory.size i32.const 16 i32.shl - i32.const 40812 + i32.const 42268 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1492 + i32.const 1488 + i32.store + i32.const 1496 + i32.const 1488 + i32.store i32.const 1488 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1524 + i32.const 1520 + i32.store + i32.const 1528 + i32.const 1520 + i32.store i32.const 1520 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1604 + i32.const 1600 + i32.store + i32.const 1608 + i32.const 1600 + i32.store i32.const 1600 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $std/string/str @@ -6974,9 +8144,10 @@ call $~lib/string/String#at local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 global.get $std/string/str local.tee $1 i32.store offset=8 @@ -7006,20 +8177,20 @@ local.get $0 i32.const -1 call $~lib/string/String#at - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $3 + local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 global.get $std/string/str - local.tee $1 + local.tee $0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $3 - i32.store offset=12 - local.get $1 local.get $3 + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7028,12 +8199,12 @@ i32.const 1 i32.sub call $~lib/string/String#charAt - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $~lib/string/String.__eq i32.eqz if @@ -7045,16 +8216,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $1 + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $1 + local.get $0 i32.store offset=12 local.get $0 i32.const 0 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7064,9 +8235,10 @@ call $~lib/string/String#at local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1744 i32.store offset=4 local.get $0 @@ -7084,9 +8256,10 @@ global.get $~lib/memory/__stack_pointer i32.const 1712 i32.store - i32.const 1712 - call $~lib/string/String.__not - i32.eqz + i32.const 1708 + i32.load + i32.const 1 + i32.shr_u if i32.const 0 i32.const 1120 @@ -7098,8 +8271,11 @@ global.get $~lib/memory/__stack_pointer i32.const 1776 i32.store - i32.const 1776 - call $~lib/string/String.__not + i32.const 1772 + i32.load + i32.const 1 + i32.shr_u + i32.eqz if i32.const 0 i32.const 1120 @@ -7111,8 +8287,11 @@ global.get $~lib/memory/__stack_pointer i32.const 1808 i32.store - i32.const 1808 - call $~lib/string/String.__not + i32.const 1804 + i32.load + i32.const 1 + i32.shr_u + i32.eqz if i32.const 0 i32.const 1120 @@ -7127,9 +8306,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1776 i32.store offset=4 local.get $0 @@ -7150,9 +8330,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1840 i32.store offset=4 local.get $0 @@ -7173,9 +8354,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1872 i32.store offset=4 local.get $0 @@ -7196,9 +8378,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1872 i32.store offset=4 local.get $0 @@ -7218,9 +8401,10 @@ call $~lib/string/String.fromCharCode local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1904 i32.store offset=4 local.get $0 @@ -7247,9 +8431,10 @@ call $~lib/string/String.fromCharCodes local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1968 i32.store offset=4 local.get $0 @@ -7276,9 +8461,10 @@ call $~lib/string/String.fromCharCodes local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2032 i32.store offset=4 local.get $0 @@ -7305,9 +8491,10 @@ call $~lib/string/String.fromCharCodes local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2112 i32.store offset=4 local.get $0 @@ -7326,9 +8513,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1776 i32.store offset=4 local.get $0 @@ -7347,9 +8535,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1872 i32.store offset=4 local.get $0 @@ -7368,9 +8557,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2144 i32.store offset=4 local.get $0 @@ -7386,21 +8576,14 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $1 global.get $std/string/str local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2176 i32.store offset=4 block $__inlined_func$~lib/string/String#startsWith (result i32) - i32.const 2172 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - local.set $5 - i32.const 0 - local.get $4 i32.const 0 local.get $0 i32.const 20 @@ -7410,17 +8593,26 @@ i32.shr_u local.tee $1 local.get $1 + i32.const 0 + i32.gt_s select - local.tee $3 - i32.add + local.set $3 + i32.const 0 local.get $1 - i32.gt_s + local.get $3 + i32.const 2172 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.add + i32.lt_s br_if $__inlined_func$~lib/string/String#startsWith drop local.get $0 local.get $3 i32.const 2176 - local.get $5 + local.get $1 call $~lib/util/string/compareImpl i32.eqz end @@ -7434,19 +8626,14 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $1 global.get $std/string/str local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2208 i32.store offset=4 block $__inlined_func$~lib/string/String#endsWith (result i32) - i32.const 2204 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - local.set $3 i32.const 0 i32.const 536870910 local.get $0 @@ -7455,20 +8642,24 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 - local.get $4 + local.tee $3 + local.get $3 i32.const 536870910 - i32.gt_u + i32.gt_s select - local.get $1 + i32.const 2204 + i32.load + i32.const 1 + i32.shr_u + local.tee $3 i32.sub - local.tee $1 + local.tee $4 i32.const 0 i32.lt_s br_if $__inlined_func$~lib/string/String#endsWith drop local.get $0 - local.get $1 + local.get $4 i32.const 2208 local.get $3 call $~lib/util/string/compareImpl @@ -7484,13 +8675,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2240 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2240 i32.const 0 call $~lib/string/String#indexOf @@ -7505,21 +8697,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2272 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.const 2272 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 global.get $std/string/str local.tee $1 i32.store offset=4 @@ -7536,21 +8730,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2272 i32.store offset=16 - local.get $0 + local.get $1 i32.const 15 i32.const 2272 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 global.get $std/string/str local.tee $1 i32.store offset=4 @@ -7567,9 +8763,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2272 i32.store offset=16 i32.const 1712 @@ -7578,9 +8775,10 @@ call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2304 i32.store offset=4 local.get $0 @@ -7596,9 +8794,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 1712 @@ -7607,9 +8806,10 @@ call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -7625,9 +8825,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1808 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 1808 @@ -7636,9 +8837,10 @@ call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1808 i32.store offset=4 local.get $0 @@ -7654,9 +8856,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2272 i32.store offset=16 i32.const 2336 @@ -7665,9 +8868,10 @@ call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2368 i32.store offset=4 local.get $0 @@ -7683,9 +8887,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2400 i32.store offset=16 i32.const 2336 @@ -7694,9 +8899,10 @@ call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2432 i32.store offset=4 local.get $0 @@ -7712,9 +8918,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2400 i32.store offset=16 i32.const 2336 @@ -7723,9 +8930,10 @@ call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2464 i32.store offset=4 local.get $0 @@ -7741,21 +8949,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2272 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.const 2272 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 global.get $std/string/str local.tee $1 i32.store offset=4 @@ -7772,21 +8982,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2272 i32.store offset=16 - local.get $0 + local.get $1 i32.const 15 i32.const 2272 call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 global.get $std/string/str local.tee $1 i32.store offset=4 @@ -7803,9 +9015,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2272 i32.store offset=16 i32.const 1712 @@ -7814,9 +9027,10 @@ call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2304 i32.store offset=4 local.get $0 @@ -7832,9 +9046,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 1712 @@ -7843,9 +9058,10 @@ call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -7861,9 +9077,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1808 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 1808 @@ -7872,9 +9089,10 @@ call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1808 i32.store offset=4 local.get $0 @@ -7890,9 +9108,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2272 i32.store offset=16 i32.const 2336 @@ -7901,9 +9120,10 @@ call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2512 i32.store offset=4 local.get $0 @@ -7919,9 +9139,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=16 i32.const 2336 @@ -7930,9 +9151,10 @@ call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2544 i32.store offset=4 local.get $0 @@ -7948,9 +9170,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=16 i32.const 2336 @@ -7959,9 +9182,10 @@ call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2576 i32.store offset=4 local.get $0 @@ -7977,9 +9201,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -7995,9 +9220,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2176 i32.store offset=4 i32.const 1712 @@ -8015,9 +9241,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1808 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=4 i32.const 1808 @@ -8033,15 +9260,15 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $1 global.get $std/string/str local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $1 + local.get $1 + local.get $0 i32.store offset=4 local.get $0 - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String#indexOf if @@ -8053,13 +9280,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1712 i32.const 0 call $~lib/string/String#indexOf @@ -8072,13 +9300,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2624 i32.const 0 call $~lib/string/String#indexOf @@ -8093,13 +9322,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2656 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2656 i32.const 0 call $~lib/string/String#indexOf @@ -8114,13 +9344,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2624 i32.const 2 call $~lib/string/String#indexOf @@ -8135,13 +9366,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2624 i32.const 3 call $~lib/string/String#indexOf @@ -8156,13 +9388,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2688 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2688 i32.const -1 call $~lib/string/String#indexOf @@ -8177,9 +9410,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -8195,9 +9429,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2176 i32.store offset=4 i32.const 1712 @@ -8215,13 +9450,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1712 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -8245,13 +9481,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2624 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -8266,13 +9503,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2656 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2656 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -8287,13 +9525,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2720 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2720 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -8308,13 +9547,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2624 i32.const 2 call $~lib/string/String#lastIndexOf @@ -8329,13 +9569,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2624 i32.const 3 call $~lib/string/String#lastIndexOf @@ -8350,13 +9591,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2688 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2688 i32.const -1 call $~lib/string/String#lastIndexOf @@ -8371,13 +9613,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2752 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2752 i32.const 0 call $~lib/string/String#lastIndexOf @@ -8392,13 +9635,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2176 i32.store offset=4 - local.get $0 + local.get $1 i32.const 2176 i32.const 0 call $~lib/string/String#lastIndexOf @@ -8411,9 +9655,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -8428,9 +9673,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1808 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1808 @@ -8447,9 +9693,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=4 i32.const 1712 @@ -8466,9 +9713,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2784 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2784 i32.store offset=4 i32.const 2784 @@ -8483,9 +9731,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2816 i32.store offset=4 i32.const 2336 @@ -8502,9 +9751,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2816 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=4 i32.const 2816 @@ -8521,9 +9771,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2848 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=4 i32.const 2848 @@ -8540,9 +9791,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2848 i32.store offset=4 i32.const 2336 @@ -8559,9 +9811,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2304 i32.store offset=4 i32.const 1712 @@ -8578,9 +9831,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1776 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1776 @@ -8603,9 +9857,10 @@ call $~lib/string/String#trimStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -8627,9 +9882,10 @@ call $~lib/string/String#trimStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2880 i32.store offset=4 local.get $0 @@ -8651,9 +9907,10 @@ call $~lib/string/String#trimStart local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2960 i32.store offset=4 local.get $0 @@ -8675,9 +9932,10 @@ call $~lib/string/String#trimEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -8699,9 +9957,10 @@ call $~lib/string/String#trimEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2880 i32.store offset=4 local.get $0 @@ -8723,9 +9982,10 @@ call $~lib/string/String#trimEnd local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3008 i32.store offset=4 local.get $0 @@ -8747,9 +10007,10 @@ call $~lib/string/String#trim local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -8771,9 +10032,10 @@ call $~lib/string/String#trim local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2880 i32.store offset=4 local.get $0 @@ -8795,9 +10057,10 @@ call $~lib/string/String#trim local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -9394,8 +10657,8 @@ i32.const 0 call $~lib/util/string/strtol f32.demote_f64 - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 f32.eq if i32.const 0 @@ -11286,9 +12549,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 9392 i32.store offset=28 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 9552 i32.store offset=32 i32.const 9392 @@ -11296,9 +12560,10 @@ call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=20 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 9712 i32.store offset=24 local.get $0 @@ -11306,9 +12571,10 @@ call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 9872 i32.store offset=16 local.get $0 @@ -11316,9 +12582,10 @@ call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 10032 i32.store offset=8 local.get $0 @@ -11732,12 +12999,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1808 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12944 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.const 12944 call $~lib/string/String#concat @@ -11773,9 +13041,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -11806,9 +13075,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=4 i32.const 1712 @@ -11823,9 +13093,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 0 @@ -11840,9 +13111,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1808 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12944 i32.store offset=4 i32.const 1808 @@ -11857,9 +13129,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1808 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=4 i32.const 1808 @@ -11875,9 +13148,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13008 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13040 i32.store offset=4 i32.const 13008 @@ -11892,9 +13166,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13008 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13008 i32.store offset=4 i32.const 13008 @@ -11910,9 +13185,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13072 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13104 i32.store offset=4 i32.const 13072 @@ -11927,9 +13203,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13136 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13168 i32.store offset=4 i32.const 13136 @@ -11944,9 +13221,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13200 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13200 i32.store offset=4 i32.const 13200 @@ -11962,9 +13240,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13200 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13248 i32.store offset=4 i32.const 13200 @@ -11979,9 +13258,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13296 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13344 i32.store offset=4 i32.const 13296 @@ -11996,9 +13276,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 12944 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=4 i32.const 12944 @@ -12014,9 +13295,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13392 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=4 i32.const 13392 @@ -12032,9 +13314,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13392 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13424 i32.store offset=4 i32.const 13392 @@ -12049,9 +13332,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13392 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=4 i32.const 13392 @@ -12067,9 +13351,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13392 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=4 i32.const 13392 @@ -12084,9 +13369,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 2336 @@ -12102,9 +13388,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=4 i32.const 1712 @@ -12120,9 +13407,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 2336 @@ -12137,9 +13425,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=4 i32.const 1712 @@ -12154,9 +13443,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 2336 @@ -12171,9 +13461,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=4 i32.const 1712 @@ -12188,9 +13479,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -12205,9 +13497,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -12222,9 +13515,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -12239,9 +13533,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 i32.const 1712 @@ -12256,9 +13551,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 3120 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13456 i32.store offset=4 i32.const 3120 @@ -12274,9 +13570,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13456 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3120 i32.store offset=4 i32.const 13456 @@ -12292,9 +13589,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13456 i32.store offset=4 i32.const 13488 @@ -12309,9 +13607,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13456 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13488 i32.store offset=4 i32.const 13456 @@ -12326,9 +13625,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13456 i32.store offset=4 i32.const 13488 @@ -12344,9 +13644,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13456 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13488 i32.store offset=4 i32.const 13456 @@ -12362,9 +13663,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13488 i32.store offset=4 i32.const 13488 @@ -12379,9 +13681,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13488 i32.store offset=4 i32.const 13488 @@ -12396,9 +13699,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13488 i32.store offset=4 i32.const 13488 @@ -12413,9 +13717,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13488 i32.store offset=4 i32.const 13488 @@ -12430,9 +13735,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13456 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13520 i32.store offset=4 i32.const 13456 @@ -12448,9 +13754,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13520 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13456 i32.store offset=4 i32.const 13520 @@ -12465,9 +13772,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13456 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13520 i32.store offset=4 i32.const 13456 @@ -12482,9 +13790,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 3120 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3120 i32.store offset=4 i32.const 3120 @@ -12500,9 +13809,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13488 i32.store offset=4 i32.const 13488 @@ -12518,9 +13828,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2400 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2400 i32.store offset=4 i32.const 2400 @@ -12536,9 +13847,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2400 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13552 i32.store offset=4 i32.const 2400 @@ -12553,9 +13865,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13584 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13584 i32.store offset=4 i32.const 13584 @@ -12571,9 +13884,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13616 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13584 i32.store offset=4 i32.const 13616 @@ -12647,9 +13961,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -12672,9 +13987,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -12697,9 +14013,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1808 i32.store offset=4 local.get $0 @@ -12722,9 +14039,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13424 i32.store offset=4 local.get $0 @@ -12747,9 +14065,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13696 i32.store offset=4 local.get $0 @@ -12772,9 +14091,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13728 i32.store offset=4 local.get $0 @@ -12797,9 +14117,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13776 i32.store offset=4 local.get $0 @@ -12822,9 +14143,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13808 i32.store offset=4 local.get $0 @@ -12847,9 +14169,10 @@ call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13840 i32.store offset=4 local.get $0 @@ -12865,12 +14188,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 1712 @@ -12879,9 +14203,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -12897,12 +14222,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 1712 @@ -12911,9 +14237,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4144 i32.store offset=4 local.get $0 @@ -12929,12 +14256,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 4144 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 4144 @@ -12943,9 +14271,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -12961,12 +14290,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 4144 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 4144 @@ -12975,9 +14305,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4144 i32.store offset=4 local.get $0 @@ -12993,12 +14324,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4112 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2336 @@ -13007,9 +14339,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -13025,12 +14358,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2336 @@ -13039,9 +14373,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4144 i32.store offset=4 local.get $0 @@ -13057,12 +14392,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2848 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2336 @@ -13071,9 +14407,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -13089,12 +14426,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=16 i32.const 2336 @@ -13103,9 +14441,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -13121,12 +14460,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13888 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4112 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 13888 @@ -13135,9 +14475,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13920 i32.store offset=4 local.get $0 @@ -13153,12 +14494,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2336 @@ -13167,9 +14509,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13952 i32.store offset=4 local.get $0 @@ -13185,12 +14528,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13984 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14016 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 13984 @@ -13199,9 +14543,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13952 i32.store offset=4 local.get $0 @@ -13217,12 +14562,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14048 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14080 i32.store offset=16 i32.const 2336 @@ -13231,9 +14577,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14112 i32.store offset=4 local.get $0 @@ -13249,12 +14596,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14048 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 2336 @@ -13263,9 +14611,10 @@ call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 12976 i32.store offset=4 local.get $0 @@ -13281,12 +14630,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=16 i32.const 1712 @@ -13295,9 +14645,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -13313,12 +14664,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4112 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2336 @@ -13327,9 +14679,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -13345,12 +14698,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2544 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2544 @@ -13359,9 +14713,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14080 i32.store offset=4 local.get $0 @@ -13377,12 +14732,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 14144 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 14144 @@ -13391,9 +14747,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14192 i32.store offset=4 local.get $0 @@ -13409,12 +14766,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2544 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=16 i32.const 2544 @@ -13423,9 +14781,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2544 i32.store offset=4 local.get $0 @@ -13441,12 +14800,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 14224 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14192 i32.store offset=16 i32.const 14224 @@ -13455,9 +14815,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14272 i32.store offset=4 local.get $0 @@ -13473,12 +14834,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2544 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14080 i32.store offset=16 i32.const 2544 @@ -13487,9 +14849,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14320 i32.store offset=4 local.get $0 @@ -13505,12 +14868,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 14352 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14384 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14080 i32.store offset=16 i32.const 14352 @@ -13519,9 +14883,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14416 i32.store offset=4 local.get $0 @@ -13537,12 +14902,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2848 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2336 @@ -13551,9 +14917,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -13569,12 +14936,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2848 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14448 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14080 i32.store offset=16 i32.const 2848 @@ -13583,9 +14951,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2848 i32.store offset=4 local.get $0 @@ -13601,12 +14970,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14480 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2336 @@ -13615,9 +14985,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14512 i32.store offset=4 local.get $0 @@ -13633,12 +15004,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 12976 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 12976 @@ -13647,9 +15019,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4144 i32.store offset=4 local.get $0 @@ -13665,12 +15038,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13888 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4112 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 13888 @@ -13679,9 +15053,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14544 i32.store offset=4 local.get $0 @@ -13697,12 +15072,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 1712 @@ -13711,9 +15087,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -13729,12 +15106,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 1712 @@ -13743,9 +15121,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4144 i32.store offset=4 local.get $0 @@ -13761,12 +15140,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 4144 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 4144 @@ -13775,9 +15155,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -13793,12 +15174,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 4144 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 4144 @@ -13807,9 +15189,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4144 i32.store offset=4 local.get $0 @@ -13825,12 +15208,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4112 i32.store offset=16 i32.const 2336 @@ -13839,9 +15223,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4112 i32.store offset=4 local.get $0 @@ -13857,12 +15242,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2816 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4112 i32.store offset=16 i32.const 2336 @@ -13871,9 +15257,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -13889,12 +15276,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4144 i32.store offset=16 i32.const 2336 @@ -13903,9 +15291,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14576 i32.store offset=4 local.get $0 @@ -13921,12 +15310,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=16 i32.const 2336 @@ -13935,9 +15325,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2336 i32.store offset=4 local.get $0 @@ -13953,12 +15344,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 14624 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14656 i32.store offset=16 i32.const 14624 @@ -13967,9 +15359,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14688 i32.store offset=4 local.get $0 @@ -13985,12 +15378,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 12976 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 12976 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14736 i32.store offset=16 i32.const 12976 @@ -13999,9 +15393,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14736 i32.store offset=4 local.get $0 @@ -14017,12 +15412,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13696 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1808 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14768 i32.store offset=16 i32.const 13696 @@ -14031,9 +15427,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14800 i32.store offset=4 local.get $0 @@ -14049,12 +15446,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 13696 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13424 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 14656 i32.store offset=16 i32.const 13696 @@ -14063,9 +15461,10 @@ call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14848 i32.store offset=4 local.get $0 @@ -14091,9 +15490,10 @@ call $~lib/string/String#slice local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14880 i32.store offset=4 local.get $0 @@ -14118,9 +15518,10 @@ call $~lib/string/String#slice local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14928 i32.store offset=4 local.get $0 @@ -14145,9 +15546,10 @@ call $~lib/string/String#slice local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14960 i32.store offset=4 local.get $0 @@ -14172,9 +15574,10 @@ call $~lib/string/String#slice local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14992 i32.store offset=4 local.get $0 @@ -14199,9 +15602,10 @@ call $~lib/string/String#slice local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 15024 i32.store offset=4 local.get $0 @@ -14226,9 +15630,10 @@ call $~lib/string/String#slice local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14253,9 +15658,10 @@ call $~lib/string/String#slice local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 15056 i32.store offset=4 local.get $0 @@ -14280,9 +15686,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14880 i32.store offset=4 local.get $0 @@ -14307,9 +15714,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14928 i32.store offset=4 local.get $0 @@ -14334,9 +15742,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14960 i32.store offset=4 local.get $0 @@ -14361,9 +15770,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 15104 i32.store offset=4 local.get $0 @@ -14388,9 +15798,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14415,9 +15826,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 15152 i32.store offset=4 local.get $0 @@ -14442,9 +15854,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14469,9 +15882,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14880 i32.store offset=4 local.get $0 @@ -14496,9 +15910,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 15184 i32.store offset=4 local.get $0 @@ -14523,9 +15938,10 @@ call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14550,9 +15966,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14880 i32.store offset=4 local.get $0 @@ -14577,9 +15994,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14880 i32.store offset=4 local.get $0 @@ -14604,9 +16022,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14880 i32.store offset=4 local.get $0 @@ -14631,9 +16050,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14992 i32.store offset=4 local.get $0 @@ -14658,9 +16078,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14685,9 +16106,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 15216 i32.store offset=4 local.get $0 @@ -14712,9 +16134,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14739,9 +16162,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14880 i32.store offset=4 local.get $0 @@ -14766,9 +16190,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14793,9 +16218,10 @@ call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2848 i32.store offset=4 local.get $0 @@ -14811,9 +16237,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.const 0 i32.const 2147483647 @@ -14830,9 +16257,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14851,12 +16279,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.const 1712 i32.const 2147483647 @@ -14874,12 +16303,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.const 2624 i32.const 2147483647 @@ -14896,9 +16326,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -14917,12 +16348,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 15424 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 7184 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15424 i32.const 7184 i32.const 2147483647 @@ -14939,9 +16371,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 15424 i32.store offset=4 local.get $0 @@ -14960,12 +16393,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 15424 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15424 i32.const 2624 i32.const 2147483647 @@ -14982,9 +16416,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -14999,9 +16434,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15016,9 +16452,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -15037,12 +16474,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 15456 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15504 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15456 i32.const 15504 i32.const 2147483647 @@ -15059,9 +16497,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -15076,9 +16515,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15093,9 +16533,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -15114,12 +16555,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 15536 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15536 i32.const 2624 i32.const 2147483647 @@ -15136,9 +16578,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -15153,9 +16596,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15170,9 +16614,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1712 i32.store offset=4 local.get $1 @@ -15187,9 +16632,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -15208,12 +16654,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 15568 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15568 i32.const 2624 i32.const 2147483647 @@ -15230,9 +16677,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1712 i32.store offset=4 local.get $1 @@ -15247,9 +16695,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -15264,9 +16713,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15281,9 +16731,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -15302,12 +16753,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 15600 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15600 i32.const 2624 i32.const 2147483647 @@ -15324,9 +16776,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -15341,9 +16794,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15358,9 +16812,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 14048 i32.store offset=4 local.get $1 @@ -15375,9 +16830,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -15396,12 +16852,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.const 1712 i32.const 2147483647 @@ -15418,9 +16875,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -15435,9 +16893,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15452,9 +16911,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -15473,12 +16933,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.const 1712 i32.const 0 @@ -15496,12 +16957,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.const 1712 i32.const 1 @@ -15518,9 +16980,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1808 i32.store offset=4 local.get $0 @@ -15539,12 +17002,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 15424 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15424 i32.const 2624 i32.const 1 @@ -15561,9 +17025,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1808 i32.store offset=4 local.get $0 @@ -15582,12 +17047,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.const 1712 i32.const 4 @@ -15604,9 +17070,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -15621,9 +17088,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15638,9 +17106,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -15659,12 +17128,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 2336 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2336 i32.const 1712 i32.const -1 @@ -15681,9 +17151,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -15698,9 +17169,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15715,9 +17187,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -15736,12 +17209,13 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 15424 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2624 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 15424 i32.const 2624 i32.const -1 @@ -15758,9 +17232,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1808 i32.store offset=4 local.get $1 @@ -15775,9 +17250,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 12944 i32.store offset=4 local.get $1 @@ -15792,9 +17268,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -15817,9 +17294,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -15839,9 +17317,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3120 i32.store offset=4 local.get $0 @@ -15861,13 +17340,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15920 + local.get $1 + i32.const 17376 i32.store offset=4 local.get $0 - i32.const 15920 + i32.const 17376 call $~lib/string/String.__eq i32.eqz if @@ -15883,13 +17363,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15952 + local.get $1 + i32.const 17408 i32.store offset=4 local.get $0 - i32.const 15952 + i32.const 17408 call $~lib/string/String.__eq i32.eqz if @@ -15905,9 +17386,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2400 i32.store offset=4 local.get $0 @@ -15927,13 +17409,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15984 + local.get $1 + i32.const 17440 i32.store offset=4 local.get $0 - i32.const 15984 + i32.const 17440 call $~lib/string/String.__eq i32.eqz if @@ -15949,9 +17432,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13584 i32.store offset=4 local.get $0 @@ -15971,13 +17455,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16016 + local.get $1 + i32.const 17472 i32.store offset=4 local.get $0 - i32.const 16016 + i32.const 17472 call $~lib/string/String.__eq i32.eqz if @@ -15993,13 +17478,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16048 + local.get $1 + i32.const 17504 i32.store offset=4 local.get $0 - i32.const 16048 + i32.const 17504 call $~lib/string/String.__eq i32.eqz if @@ -16015,13 +17501,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16080 + local.get $1 + i32.const 17536 i32.store offset=4 local.get $0 - i32.const 16080 + i32.const 17536 call $~lib/string/String.__eq i32.eqz if @@ -16037,13 +17524,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16128 + local.get $1 + i32.const 17584 i32.store offset=4 local.get $0 - i32.const 16128 + i32.const 17584 call $~lib/string/String.__eq i32.eqz if @@ -16059,13 +17547,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16176 + local.get $1 + i32.const 17632 i32.store offset=4 local.get $0 - i32.const 16176 + i32.const 17632 call $~lib/string/String.__eq i32.eqz if @@ -16081,13 +17570,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16224 + local.get $1 + i32.const 17680 i32.store offset=4 local.get $0 - i32.const 16224 + i32.const 17680 call $~lib/string/String.__eq i32.eqz if @@ -16103,13 +17593,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16272 + local.get $1 + i32.const 17728 i32.store offset=4 local.get $0 - i32.const 16272 + i32.const 17728 call $~lib/string/String.__eq i32.eqz if @@ -16125,13 +17616,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16320 + local.get $1 + i32.const 17776 i32.store offset=4 local.get $0 - i32.const 16320 + i32.const 17776 call $~lib/string/String.__eq i32.eqz if @@ -16147,13 +17639,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16368 + local.get $1 + i32.const 17824 i32.store offset=4 local.get $0 - i32.const 16368 + i32.const 17824 call $~lib/string/String.__eq i32.eqz if @@ -16169,13 +17662,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16416 + local.get $1 + i32.const 17872 i32.store offset=4 local.get $0 - i32.const 16416 + i32.const 17872 call $~lib/string/String.__eq i32.eqz if @@ -16191,9 +17685,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -16213,13 +17708,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16448 + local.get $1 + i32.const 17904 i32.store offset=4 local.get $0 - i32.const 16448 + i32.const 17904 call $~lib/string/String.__eq i32.eqz if @@ -16235,13 +17731,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16320 + local.get $1 + i32.const 17776 i32.store offset=4 local.get $0 - i32.const 16320 + i32.const 17776 call $~lib/string/String.__eq i32.eqz if @@ -16257,13 +17754,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16480 + local.get $1 + i32.const 17936 i32.store offset=4 local.get $0 - i32.const 16480 + i32.const 17936 call $~lib/string/String.__eq i32.eqz if @@ -16279,13 +17777,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16528 + local.get $1 + i32.const 17984 i32.store offset=4 local.get $0 - i32.const 16528 + i32.const 17984 call $~lib/string/String.__eq i32.eqz if @@ -16301,9 +17800,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -16323,9 +17823,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3120 i32.store offset=4 local.get $0 @@ -16345,13 +17846,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15920 + local.get $1 + i32.const 17376 i32.store offset=4 local.get $0 - i32.const 15920 + i32.const 17376 call $~lib/string/String.__eq i32.eqz if @@ -16367,9 +17869,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -16389,13 +17892,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16576 + local.get $1 + i32.const 18032 i32.store offset=4 local.get $0 - i32.const 16576 + i32.const 18032 call $~lib/string/String.__eq i32.eqz if @@ -16411,13 +17915,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16608 + local.get $1 + i32.const 18064 i32.store offset=4 local.get $0 - i32.const 16608 + i32.const 18064 call $~lib/string/String.__eq i32.eqz if @@ -16433,13 +17938,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16640 + local.get $1 + i32.const 18096 i32.store offset=4 local.get $0 - i32.const 16640 + i32.const 18096 call $~lib/string/String.__eq i32.eqz if @@ -16455,13 +17961,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16672 + local.get $1 + i32.const 18128 i32.store offset=4 local.get $0 - i32.const 16672 + i32.const 18128 call $~lib/string/String.__eq i32.eqz if @@ -16477,13 +17984,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16704 + local.get $1 + i32.const 18160 i32.store offset=4 local.get $0 - i32.const 16704 + i32.const 18160 call $~lib/string/String.__eq i32.eqz if @@ -16499,13 +18007,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16736 + local.get $1 + i32.const 18192 i32.store offset=4 local.get $0 - i32.const 16736 + i32.const 18192 call $~lib/string/String.__eq i32.eqz if @@ -16521,13 +18030,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16768 + local.get $1 + i32.const 18224 i32.store offset=4 local.get $0 - i32.const 16768 + i32.const 18224 call $~lib/string/String.__eq i32.eqz if @@ -16543,13 +18053,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16800 + local.get $1 + i32.const 18256 i32.store offset=4 local.get $0 - i32.const 16800 + i32.const 18256 call $~lib/string/String.__eq i32.eqz if @@ -16565,13 +18076,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16848 + local.get $1 + i32.const 18304 i32.store offset=4 local.get $0 - i32.const 16848 + i32.const 18304 call $~lib/string/String.__eq i32.eqz if @@ -16587,13 +18099,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16896 + local.get $1 + i32.const 18352 i32.store offset=4 local.get $0 - i32.const 16896 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if @@ -16609,13 +18122,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16944 + local.get $1 + i32.const 18400 i32.store offset=4 local.get $0 - i32.const 16944 + i32.const 18400 call $~lib/string/String.__eq i32.eqz if @@ -16631,13 +18145,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16992 + local.get $1 + i32.const 18448 i32.store offset=4 local.get $0 - i32.const 16992 + i32.const 18448 call $~lib/string/String.__eq i32.eqz if @@ -16653,9 +18168,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -16675,13 +18191,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15984 + local.get $1 + i32.const 17440 i32.store offset=4 local.get $0 - i32.const 15984 + i32.const 17440 call $~lib/string/String.__eq i32.eqz if @@ -16697,13 +18214,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16896 + local.get $1 + i32.const 18352 i32.store offset=4 local.get $0 - i32.const 16896 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if @@ -16719,13 +18237,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17040 + local.get $1 + i32.const 18496 i32.store offset=4 local.get $0 - i32.const 17040 + i32.const 18496 call $~lib/string/String.__eq i32.eqz if @@ -16741,13 +18260,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17088 + local.get $1 + i32.const 18544 i32.store offset=4 local.get $0 - i32.const 17088 + i32.const 18544 call $~lib/string/String.__eq i32.eqz if @@ -16763,13 +18283,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17136 + local.get $1 + i32.const 18592 i32.store offset=4 local.get $0 - i32.const 17136 + i32.const 18592 call $~lib/string/String.__eq i32.eqz if @@ -16785,13 +18306,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17136 + local.get $1 + i32.const 18592 i32.store offset=4 local.get $0 - i32.const 17136 + i32.const 18592 call $~lib/string/String.__eq i32.eqz if @@ -16807,9 +18329,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -16829,9 +18352,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3120 i32.store offset=4 local.get $0 @@ -16851,9 +18375,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13488 i32.store offset=4 local.get $0 @@ -16873,13 +18398,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17184 + local.get $1 + i32.const 18640 i32.store offset=4 local.get $0 - i32.const 17184 + i32.const 18640 call $~lib/string/String.__eq i32.eqz if @@ -16895,13 +18421,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17216 + local.get $1 + i32.const 18672 i32.store offset=4 local.get $0 - i32.const 17216 + i32.const 18672 call $~lib/string/String.__eq i32.eqz if @@ -16917,13 +18444,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17248 + local.get $1 + i32.const 18704 i32.store offset=4 local.get $0 - i32.const 17248 + i32.const 18704 call $~lib/string/String.__eq i32.eqz if @@ -16939,13 +18467,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17280 + local.get $1 + i32.const 18736 i32.store offset=4 local.get $0 - i32.const 17280 + i32.const 18736 call $~lib/string/String.__eq i32.eqz if @@ -16961,13 +18490,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17312 + local.get $1 + i32.const 18768 i32.store offset=4 local.get $0 - i32.const 17312 + i32.const 18768 call $~lib/string/String.__eq i32.eqz if @@ -16983,13 +18513,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17360 + local.get $1 + i32.const 18816 i32.store offset=4 local.get $0 - i32.const 17360 + i32.const 18816 call $~lib/string/String.__eq i32.eqz if @@ -17005,13 +18536,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17440 + local.get $1 + i32.const 18896 i32.store offset=4 local.get $0 - i32.const 17440 + i32.const 18896 call $~lib/string/String.__eq i32.eqz if @@ -17027,13 +18559,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17536 + local.get $1 + i32.const 18992 i32.store offset=4 local.get $0 - i32.const 17536 + i32.const 18992 call $~lib/string/String.__eq i32.eqz if @@ -17049,13 +18582,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17632 + local.get $1 + i32.const 19088 i32.store offset=4 local.get $0 - i32.const 17632 + i32.const 19088 call $~lib/string/String.__eq i32.eqz if @@ -17071,13 +18605,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17728 + local.get $1 + i32.const 19184 i32.store offset=4 local.get $0 - i32.const 17728 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if @@ -17093,13 +18628,14 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17824 + local.get $1 + i32.const 19280 i32.store offset=4 local.get $0 - i32.const 17824 + i32.const 19280 call $~lib/string/String.__eq i32.eqz if @@ -17115,13 +18651,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17872 + local.get $1 + i32.const 19328 i32.store offset=4 local.get $0 - i32.const 17872 + i32.const 19328 call $~lib/string/String.__eq i32.eqz if @@ -17137,13 +18674,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17936 + local.get $1 + i32.const 19392 i32.store offset=4 local.get $0 - i32.const 17936 + i32.const 19392 call $~lib/string/String.__eq i32.eqz if @@ -17159,13 +18697,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18000 + local.get $1 + i32.const 19456 i32.store offset=4 local.get $0 - i32.const 18000 + i32.const 19456 call $~lib/string/String.__eq i32.eqz if @@ -17181,13 +18720,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18048 + local.get $1 + i32.const 19504 i32.store offset=4 local.get $0 - i32.const 18048 + i32.const 19504 call $~lib/string/String.__eq i32.eqz if @@ -17203,13 +18743,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18096 + local.get $1 + i32.const 19552 i32.store offset=4 local.get $0 - i32.const 18096 + i32.const 19552 call $~lib/string/String.__eq i32.eqz if @@ -17225,13 +18766,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18144 + local.get $1 + i32.const 19600 i32.store offset=4 local.get $0 - i32.const 18144 + i32.const 19600 call $~lib/string/String.__eq i32.eqz if @@ -17247,13 +18789,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18192 + local.get $1 + i32.const 19648 i32.store offset=4 local.get $0 - i32.const 18192 + i32.const 19648 call $~lib/string/String.__eq i32.eqz if @@ -17269,13 +18812,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18240 + local.get $1 + i32.const 19696 i32.store offset=4 local.get $0 - i32.const 18240 + i32.const 19696 call $~lib/string/String.__eq i32.eqz if @@ -17291,13 +18835,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18288 + local.get $1 + i32.const 19744 i32.store offset=4 local.get $0 - i32.const 18288 + i32.const 19744 call $~lib/string/String.__eq i32.eqz if @@ -17313,13 +18858,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18336 + local.get $1 + i32.const 19792 i32.store offset=4 local.get $0 - i32.const 18336 + i32.const 19792 call $~lib/string/String.__eq i32.eqz if @@ -17335,13 +18881,14 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18384 + local.get $1 + i32.const 19840 i32.store offset=4 local.get $0 - i32.const 18384 + i32.const 19840 call $~lib/string/String.__eq i32.eqz if @@ -17357,9 +18904,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -17379,13 +18927,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 15952 + local.get $1 + i32.const 17408 i32.store offset=4 local.get $0 - i32.const 15952 + i32.const 17408 call $~lib/string/String.__eq i32.eqz if @@ -17401,9 +18950,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2400 i32.store offset=4 local.get $0 @@ -17423,9 +18973,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13584 i32.store offset=4 local.get $0 @@ -17445,13 +18996,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16016 + local.get $1 + i32.const 17472 i32.store offset=4 local.get $0 - i32.const 16016 + i32.const 17472 call $~lib/string/String.__eq i32.eqz if @@ -17467,13 +19019,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16048 + local.get $1 + i32.const 17504 i32.store offset=4 local.get $0 - i32.const 16048 + i32.const 17504 call $~lib/string/String.__eq i32.eqz if @@ -17489,13 +19042,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16128 + local.get $1 + i32.const 17584 i32.store offset=4 local.get $0 - i32.const 16128 + i32.const 17584 call $~lib/string/String.__eq i32.eqz if @@ -17511,13 +19065,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18432 + local.get $1 + i32.const 19888 i32.store offset=4 local.get $0 - i32.const 18432 + i32.const 19888 call $~lib/string/String.__eq i32.eqz if @@ -17533,13 +19088,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18480 + local.get $1 + i32.const 19936 i32.store offset=4 local.get $0 - i32.const 18480 + i32.const 19936 call $~lib/string/String.__eq i32.eqz if @@ -17555,13 +19111,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16528 + local.get $1 + i32.const 17984 i32.store offset=4 local.get $0 - i32.const 16528 + i32.const 17984 call $~lib/string/String.__eq i32.eqz if @@ -17577,13 +19134,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18528 + local.get $1 + i32.const 19984 i32.store offset=4 local.get $0 - i32.const 18528 + i32.const 19984 call $~lib/string/String.__eq i32.eqz if @@ -17599,13 +19157,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18576 + local.get $1 + i32.const 20032 i32.store offset=4 local.get $0 - i32.const 18576 + i32.const 20032 call $~lib/string/String.__eq i32.eqz if @@ -17621,13 +19180,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18624 + local.get $1 + i32.const 20080 i32.store offset=4 local.get $0 - i32.const 18624 + i32.const 20080 call $~lib/string/String.__eq i32.eqz if @@ -17643,13 +19203,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18672 + local.get $1 + i32.const 20128 i32.store offset=4 local.get $0 - i32.const 18672 + i32.const 20128 call $~lib/string/String.__eq i32.eqz if @@ -17665,13 +19226,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18720 + local.get $1 + i32.const 20176 i32.store offset=4 local.get $0 - i32.const 18720 + i32.const 20176 call $~lib/string/String.__eq i32.eqz if @@ -17687,13 +19249,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18768 + local.get $1 + i32.const 20224 i32.store offset=4 local.get $0 - i32.const 18768 + i32.const 20224 call $~lib/string/String.__eq i32.eqz if @@ -17709,13 +19272,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18832 + local.get $1 + i32.const 20288 i32.store offset=4 local.get $0 - i32.const 18832 + i32.const 20288 call $~lib/string/String.__eq i32.eqz if @@ -17731,13 +19295,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18896 + local.get $1 + i32.const 20352 i32.store offset=4 local.get $0 - i32.const 18896 + i32.const 20352 call $~lib/string/String.__eq i32.eqz if @@ -17753,13 +19318,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18960 + local.get $1 + i32.const 20416 i32.store offset=4 local.get $0 - i32.const 18960 + i32.const 20416 call $~lib/string/String.__eq i32.eqz if @@ -17775,13 +19341,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19024 + local.get $1 + i32.const 20480 i32.store offset=4 local.get $0 - i32.const 19024 + i32.const 20480 call $~lib/string/String.__eq i32.eqz if @@ -17797,13 +19364,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19088 + local.get $1 + i32.const 20544 i32.store offset=4 local.get $0 - i32.const 19088 + i32.const 20544 call $~lib/string/String.__eq i32.eqz if @@ -17819,9 +19387,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -17841,13 +19410,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19152 + local.get $1 + i32.const 20608 i32.store offset=4 local.get $0 - i32.const 19152 + i32.const 20608 call $~lib/string/String.__eq i32.eqz if @@ -17863,13 +19433,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16528 + local.get $1 + i32.const 17984 i32.store offset=4 local.get $0 - i32.const 16528 + i32.const 17984 call $~lib/string/String.__eq i32.eqz if @@ -17885,13 +19456,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18528 + local.get $1 + i32.const 19984 i32.store offset=4 local.get $0 - i32.const 18528 + i32.const 19984 call $~lib/string/String.__eq i32.eqz if @@ -17907,13 +19479,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19184 + local.get $1 + i32.const 20640 i32.store offset=4 local.get $0 - i32.const 19184 + i32.const 20640 call $~lib/string/String.__eq i32.eqz if @@ -17929,13 +19502,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 18576 + local.get $1 + i32.const 20032 i32.store offset=4 local.get $0 - i32.const 18576 + i32.const 20032 call $~lib/string/String.__eq i32.eqz if @@ -17951,13 +19525,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19232 + local.get $1 + i32.const 20688 i32.store offset=4 local.get $0 - i32.const 19232 + i32.const 20688 call $~lib/string/String.__eq i32.eqz if @@ -17973,13 +19548,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19280 + local.get $1 + i32.const 20736 i32.store offset=4 local.get $0 - i32.const 19280 + i32.const 20736 call $~lib/string/String.__eq i32.eqz if @@ -17995,13 +19571,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19328 + local.get $1 + i32.const 20784 i32.store offset=4 local.get $0 - i32.const 19328 + i32.const 20784 call $~lib/string/String.__eq i32.eqz if @@ -18017,13 +19594,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19392 + local.get $1 + i32.const 20848 i32.store offset=4 local.get $0 - i32.const 19392 + i32.const 20848 call $~lib/string/String.__eq i32.eqz if @@ -18039,13 +19617,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19456 + local.get $1 + i32.const 20912 i32.store offset=4 local.get $0 - i32.const 19456 + i32.const 20912 call $~lib/string/String.__eq i32.eqz if @@ -18061,13 +19640,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19520 + local.get $1 + i32.const 20976 i32.store offset=4 local.get $0 - i32.const 19520 + i32.const 20976 call $~lib/string/String.__eq i32.eqz if @@ -18083,9 +19663,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -18105,9 +19686,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3120 i32.store offset=4 local.get $0 @@ -18127,9 +19709,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 14048 i32.store offset=4 local.get $0 @@ -18149,13 +19732,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16608 + local.get $1 + i32.const 18064 i32.store offset=4 local.get $0 - i32.const 16608 + i32.const 18064 call $~lib/string/String.__eq i32.eqz if @@ -18171,13 +19755,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16704 + local.get $1 + i32.const 18160 i32.store offset=4 local.get $0 - i32.const 16704 + i32.const 18160 call $~lib/string/String.__eq i32.eqz if @@ -18193,13 +19778,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19584 + local.get $1 + i32.const 21040 i32.store offset=4 local.get $0 - i32.const 19584 + i32.const 21040 call $~lib/string/String.__eq i32.eqz if @@ -18215,13 +19801,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19632 + local.get $1 + i32.const 21088 i32.store offset=4 local.get $0 - i32.const 19632 + i32.const 21088 call $~lib/string/String.__eq i32.eqz if @@ -18237,13 +19824,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19680 + local.get $1 + i32.const 21136 i32.store offset=4 local.get $0 - i32.const 19680 + i32.const 21136 call $~lib/string/String.__eq i32.eqz if @@ -18259,13 +19847,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19728 + local.get $1 + i32.const 21184 i32.store offset=4 local.get $0 - i32.const 19728 + i32.const 21184 call $~lib/string/String.__eq i32.eqz if @@ -18281,13 +19870,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19776 + local.get $1 + i32.const 21232 i32.store offset=4 local.get $0 - i32.const 19776 + i32.const 21232 call $~lib/string/String.__eq i32.eqz if @@ -18303,13 +19893,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19824 + local.get $1 + i32.const 21280 i32.store offset=4 local.get $0 - i32.const 19824 + i32.const 21280 call $~lib/string/String.__eq i32.eqz if @@ -18325,13 +19916,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19888 + local.get $1 + i32.const 21344 i32.store offset=4 local.get $0 - i32.const 19888 + i32.const 21344 call $~lib/string/String.__eq i32.eqz if @@ -18347,13 +19939,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 19952 + local.get $1 + i32.const 21408 i32.store offset=4 local.get $0 - i32.const 19952 + i32.const 21408 call $~lib/string/String.__eq i32.eqz if @@ -18369,13 +19962,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20016 + local.get $1 + i32.const 21472 i32.store offset=4 local.get $0 - i32.const 20016 + i32.const 21472 call $~lib/string/String.__eq i32.eqz if @@ -18391,13 +19985,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20080 + local.get $1 + i32.const 21536 i32.store offset=4 local.get $0 - i32.const 20080 + i32.const 21536 call $~lib/string/String.__eq i32.eqz if @@ -18413,13 +20008,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20144 + local.get $1 + i32.const 21600 i32.store offset=4 local.get $0 - i32.const 20144 + i32.const 21600 call $~lib/string/String.__eq i32.eqz if @@ -18435,13 +20031,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20144 + local.get $1 + i32.const 21600 i32.store offset=4 local.get $0 - i32.const 20144 + i32.const 21600 call $~lib/string/String.__eq i32.eqz if @@ -18457,9 +20054,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3056 i32.store offset=4 local.get $0 @@ -18479,9 +20077,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 3120 i32.store offset=4 local.get $0 @@ -18501,13 +20100,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17184 + local.get $1 + i32.const 18640 i32.store offset=4 local.get $0 - i32.const 17184 + i32.const 18640 call $~lib/string/String.__eq i32.eqz if @@ -18523,13 +20123,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17216 + local.get $1 + i32.const 18672 i32.store offset=4 local.get $0 - i32.const 17216 + i32.const 18672 call $~lib/string/String.__eq i32.eqz if @@ -18545,13 +20146,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17280 + local.get $1 + i32.const 18736 i32.store offset=4 local.get $0 - i32.const 17280 + i32.const 18736 call $~lib/string/String.__eq i32.eqz if @@ -18567,13 +20169,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17312 + local.get $1 + i32.const 18768 i32.store offset=4 local.get $0 - i32.const 17312 + i32.const 18768 call $~lib/string/String.__eq i32.eqz if @@ -18589,13 +20192,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 17728 + local.get $1 + i32.const 19184 i32.store offset=4 local.get $0 - i32.const 17728 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if @@ -18611,13 +20215,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20208 + local.get $1 + i32.const 21664 i32.store offset=4 local.get $0 - i32.const 20208 + i32.const 21664 call $~lib/string/String.__eq i32.eqz if @@ -18633,13 +20238,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20336 + local.get $1 + i32.const 21792 i32.store offset=4 local.get $0 - i32.const 20336 + i32.const 21792 call $~lib/string/String.__eq i32.eqz if @@ -18655,13 +20261,14 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20496 + local.get $1 + i32.const 21952 i32.store offset=4 local.get $0 - i32.const 20496 + i32.const 21952 call $~lib/string/String.__eq i32.eqz if @@ -18677,13 +20284,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20592 + local.get $1 + i32.const 22048 i32.store offset=4 local.get $0 - i32.const 20592 + i32.const 22048 call $~lib/string/String.__eq i32.eqz if @@ -18699,13 +20307,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20704 + local.get $1 + i32.const 22160 i32.store offset=4 local.get $0 - i32.const 20704 + i32.const 22160 call $~lib/string/String.__eq i32.eqz if @@ -18721,13 +20330,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20800 + local.get $1 + i32.const 22256 i32.store offset=4 local.get $0 - i32.const 20800 + i32.const 22256 call $~lib/string/String.__eq i32.eqz if @@ -18743,13 +20353,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20880 + local.get $1 + i32.const 22336 i32.store offset=4 local.get $0 - i32.const 20880 + i32.const 22336 call $~lib/string/String.__eq i32.eqz if @@ -18765,13 +20376,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20944 + local.get $1 + i32.const 22400 i32.store offset=4 local.get $0 - i32.const 20944 + i32.const 22400 call $~lib/string/String.__eq i32.eqz if @@ -18787,13 +20399,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21008 + local.get $1 + i32.const 22464 i32.store offset=4 local.get $0 - i32.const 21008 + i32.const 22464 call $~lib/string/String.__eq i32.eqz if @@ -18809,13 +20422,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21072 + local.get $1 + i32.const 22528 i32.store offset=4 local.get $0 - i32.const 21072 + i32.const 22528 call $~lib/string/String.__eq i32.eqz if @@ -18831,13 +20445,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21136 + local.get $1 + i32.const 22592 i32.store offset=4 local.get $0 - i32.const 21136 + i32.const 22592 call $~lib/string/String.__eq i32.eqz if @@ -18853,13 +20468,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21200 + local.get $1 + i32.const 22656 i32.store offset=4 local.get $0 - i32.const 21200 + i32.const 22656 call $~lib/string/String.__eq i32.eqz if @@ -18875,13 +20491,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21248 + local.get $1 + i32.const 22704 i32.store offset=4 local.get $0 - i32.const 21248 + i32.const 22704 call $~lib/string/String.__eq i32.eqz if @@ -18897,13 +20514,14 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21296 + local.get $1 + i32.const 22752 i32.store offset=4 local.get $0 - i32.const 21296 + i32.const 22752 call $~lib/string/String.__eq i32.eqz if @@ -18918,13 +20536,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21344 + local.get $1 + i32.const 22800 i32.store offset=4 local.get $0 - i32.const 21344 + i32.const 22800 call $~lib/string/String.__eq i32.eqz if @@ -18939,13 +20558,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21344 + local.get $1 + i32.const 22800 i32.store offset=4 local.get $0 - i32.const 21344 + i32.const 22800 call $~lib/string/String.__eq i32.eqz if @@ -18960,9 +20580,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 7248 i32.store offset=4 local.get $0 @@ -18981,13 +20602,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21376 + local.get $1 + i32.const 22832 i32.store offset=4 local.get $0 - i32.const 21376 + i32.const 22832 call $~lib/string/String.__eq i32.eqz if @@ -19002,9 +20624,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 8544 i32.store offset=4 local.get $0 @@ -19023,9 +20646,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 7760 i32.store offset=4 local.get $0 @@ -19044,13 +20668,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22400 + local.get $1 + i32.const 23856 i32.store offset=4 local.get $0 - i32.const 22400 + i32.const 23856 call $~lib/string/String.__eq i32.eqz if @@ -19065,9 +20690,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 7824 i32.store offset=4 local.get $0 @@ -19086,13 +20712,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22464 + local.get $1 + i32.const 23920 i32.store offset=4 local.get $0 - i32.const 22464 + i32.const 23920 call $~lib/string/String.__eq i32.eqz if @@ -19107,13 +20734,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22544 + local.get $1 + i32.const 24000 i32.store offset=4 local.get $0 - i32.const 22544 + i32.const 24000 call $~lib/string/String.__eq i32.eqz if @@ -19128,13 +20756,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22608 + local.get $1 + i32.const 24064 i32.store offset=4 local.get $0 - i32.const 22608 + i32.const 24064 call $~lib/string/String.__eq i32.eqz if @@ -19149,13 +20778,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22688 + local.get $1 + i32.const 24144 i32.store offset=4 local.get $0 - i32.const 22688 + i32.const 24144 call $~lib/string/String.__eq i32.eqz if @@ -19170,13 +20800,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22736 + local.get $1 + i32.const 24192 i32.store offset=4 local.get $0 - i32.const 22736 + i32.const 24192 call $~lib/string/String.__eq i32.eqz if @@ -19191,13 +20822,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22800 + local.get $1 + i32.const 24256 i32.store offset=4 local.get $0 - i32.const 22800 + i32.const 24256 call $~lib/string/String.__eq i32.eqz if @@ -19212,13 +20844,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22864 + local.get $1 + i32.const 24320 i32.store offset=4 local.get $0 - i32.const 22864 + i32.const 24320 call $~lib/string/String.__eq i32.eqz if @@ -19233,9 +20866,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 7904 i32.store offset=4 local.get $0 @@ -19254,13 +20888,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22928 + local.get $1 + i32.const 24384 i32.store offset=4 local.get $0 - i32.const 22928 + i32.const 24384 call $~lib/string/String.__eq i32.eqz if @@ -19275,9 +20910,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4832 i32.store offset=4 local.get $0 @@ -19296,13 +20932,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22960 + local.get $1 + i32.const 24416 i32.store offset=4 local.get $0 - i32.const 22960 + i32.const 24416 call $~lib/string/String.__eq i32.eqz if @@ -19317,13 +20954,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22992 + local.get $1 + i32.const 24448 i32.store offset=4 local.get $0 - i32.const 22992 + i32.const 24448 call $~lib/string/String.__eq i32.eqz if @@ -19338,13 +20976,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23024 + local.get $1 + i32.const 24480 i32.store offset=4 local.get $0 - i32.const 23024 + i32.const 24480 call $~lib/string/String.__eq i32.eqz if @@ -19359,13 +20998,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23072 + local.get $1 + i32.const 24528 i32.store offset=4 local.get $0 - i32.const 23072 + i32.const 24528 call $~lib/string/String.__eq i32.eqz if @@ -19380,13 +21020,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23120 + local.get $1 + i32.const 24576 i32.store offset=4 local.get $0 - i32.const 23120 + i32.const 24576 call $~lib/string/String.__eq i32.eqz if @@ -19401,13 +21042,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23168 + local.get $1 + i32.const 24624 i32.store offset=4 local.get $0 - i32.const 23168 + i32.const 24624 call $~lib/string/String.__eq i32.eqz if @@ -19422,13 +21064,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23216 + local.get $1 + i32.const 24672 i32.store offset=4 local.get $0 - i32.const 23216 + i32.const 24672 call $~lib/string/String.__eq i32.eqz if @@ -19443,13 +21086,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23264 + local.get $1 + i32.const 24720 i32.store offset=4 local.get $0 - i32.const 23264 + i32.const 24720 call $~lib/string/String.__eq i32.eqz if @@ -19464,9 +21108,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 5120 i32.store offset=4 local.get $0 @@ -19485,13 +21130,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23296 + local.get $1 + i32.const 24752 i32.store offset=4 local.get $0 - i32.const 23296 + i32.const 24752 call $~lib/string/String.__eq i32.eqz if @@ -19506,13 +21152,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21376 + local.get $1 + i32.const 22832 i32.store offset=4 local.get $0 - i32.const 21376 + i32.const 22832 call $~lib/string/String.__eq i32.eqz if @@ -19527,9 +21174,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 8544 i32.store offset=4 local.get $0 @@ -19548,13 +21196,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23344 + local.get $1 + i32.const 24800 i32.store offset=4 local.get $0 - i32.const 23344 + i32.const 24800 call $~lib/string/String.__eq i32.eqz if @@ -19569,13 +21218,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23376 + local.get $1 + i32.const 24832 i32.store offset=4 local.get $0 - i32.const 23376 + i32.const 24832 call $~lib/string/String.__eq i32.eqz if @@ -19590,13 +21240,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23424 + local.get $1 + i32.const 24880 i32.store offset=4 local.get $0 - i32.const 23424 + i32.const 24880 call $~lib/string/String.__eq i32.eqz if @@ -19611,13 +21262,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23456 + local.get $1 + i32.const 24912 i32.store offset=4 local.get $0 - i32.const 23456 + i32.const 24912 call $~lib/string/String.__eq i32.eqz if @@ -19632,13 +21284,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 21344 + local.get $1 + i32.const 22800 i32.store offset=4 local.get $0 - i32.const 21344 + i32.const 22800 call $~lib/string/String.__eq i32.eqz if @@ -19653,13 +21306,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23504 + local.get $1 + i32.const 24960 i32.store offset=4 local.get $0 - i32.const 23504 + i32.const 24960 call $~lib/string/String.__eq i32.eqz if @@ -19674,13 +21328,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23552 + local.get $1 + i32.const 25008 i32.store offset=4 local.get $0 - i32.const 23552 + i32.const 25008 call $~lib/string/String.__eq i32.eqz if @@ -19695,13 +21350,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23616 + local.get $1 + i32.const 25072 i32.store offset=4 local.get $0 - i32.const 23616 + i32.const 25072 call $~lib/string/String.__eq i32.eqz if @@ -19716,13 +21372,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23680 + local.get $1 + i32.const 25136 i32.store offset=4 local.get $0 - i32.const 23680 + i32.const 25136 call $~lib/string/String.__eq i32.eqz if @@ -19737,13 +21394,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 22928 + local.get $1 + i32.const 24384 i32.store offset=4 local.get $0 - i32.const 22928 + i32.const 24384 call $~lib/string/String.__eq i32.eqz if @@ -19758,13 +21416,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23744 + local.get $1 + i32.const 25200 i32.store offset=4 local.get $0 - i32.const 23744 + i32.const 25200 call $~lib/string/String.__eq i32.eqz if @@ -19779,13 +21438,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23776 + local.get $1 + i32.const 25232 i32.store offset=4 local.get $0 - i32.const 23776 + i32.const 25232 call $~lib/string/String.__eq i32.eqz if @@ -19800,13 +21460,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23840 + local.get $1 + i32.const 25296 i32.store offset=4 local.get $0 - i32.const 23840 + i32.const 25296 call $~lib/string/String.__eq i32.eqz if @@ -19821,13 +21482,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23920 + local.get $1 + i32.const 25376 i32.store offset=4 local.get $0 - i32.const 23920 + i32.const 25376 call $~lib/string/String.__eq i32.eqz if @@ -19842,13 +21504,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 23968 + local.get $1 + i32.const 25424 i32.store offset=4 local.get $0 - i32.const 23968 + i32.const 25424 call $~lib/string/String.__eq i32.eqz if @@ -19863,13 +21526,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24016 + local.get $1 + i32.const 25472 i32.store offset=4 local.get $0 - i32.const 24016 + i32.const 25472 call $~lib/string/String.__eq i32.eqz if @@ -19884,13 +21548,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24064 + local.get $1 + i32.const 25520 i32.store offset=4 local.get $0 - i32.const 24064 + i32.const 25520 call $~lib/string/String.__eq i32.eqz if @@ -19905,13 +21570,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24112 + local.get $1 + i32.const 25568 i32.store offset=4 local.get $0 - i32.const 24112 + i32.const 25568 call $~lib/string/String.__eq i32.eqz if @@ -19926,13 +21592,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24160 + local.get $1 + i32.const 25616 i32.store offset=4 local.get $0 - i32.const 24160 + i32.const 25616 call $~lib/string/String.__eq i32.eqz if @@ -19947,13 +21614,14 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24208 + local.get $1 + i32.const 25664 i32.store offset=4 local.get $0 - i32.const 24208 + i32.const 25664 call $~lib/string/String.__eq i32.eqz if @@ -19965,23 +21633,25 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24256 + local.tee $0 + i32.const 25712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24288 + local.get $0 + i32.const 25744 i32.store offset=12 - i32.const 24256 - i32.const 24288 + i32.const 25712 + i32.const 25744 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24320 + local.get $1 + i32.const 25776 i32.store offset=4 local.get $0 - i32.const 24320 + i32.const 25776 call $~lib/string/String.__eq i32.eqz if @@ -19993,23 +21663,25 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24368 + local.get $0 + i32.const 25824 i32.store offset=12 i32.const 1712 - i32.const 24368 + i32.const 25824 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24368 + local.get $1 + i32.const 25824 i32.store offset=4 local.get $0 - i32.const 24368 + i32.const 25824 call $~lib/string/String.__eq i32.eqz if @@ -20021,23 +21693,25 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24368 + local.tee $0 + i32.const 25824 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 - i32.const 24368 + i32.const 25824 i32.const 1712 call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24368 + local.get $1 + i32.const 25824 i32.store offset=4 local.get $0 - i32.const 24368 + i32.const 25824 call $~lib/string/String.__eq i32.eqz if @@ -20049,9 +21723,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1712 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.store offset=12 i32.const 1712 @@ -20059,9 +21734,10 @@ call $~lib/string/String#concat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1712 i32.store offset=4 local.get $0 @@ -20078,7 +21754,7 @@ end i32.const 0 global.set $std/string/str - i32.const 40812 + i32.const 42268 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -20124,7 +21800,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20171,11 +21857,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2 local.get $1 i32.const 0 @@ -20210,11 +21907,21 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + 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 - global.get $~lib/memory/__stack_pointer local.get $0 i32.const 2 i32.shl @@ -20231,6 +21938,7 @@ local.get $6 call $~lib/memory/memory.copy end + local.get $5 local.get $3 i32.store i32.const 16 @@ -20266,16 +21974,25 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 i32.store + local.get $1 local.get $0 i32.load offset=12 - local.tee $1 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -20322,7 +22039,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20388,7 +22115,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20486,7 +22223,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20587,7 +22334,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20599,29 +22356,91 @@ i32.shr_u i32.const 1 i32.shl - local.set $2 + local.set $3 loop $while-continue|0 - local.get $1 local.get $2 + local.get $3 i32.lt_u if (result i32) - local.get $0 - local.get $1 - i32.add - i32.load16_u - call $~lib/util/string/isSpace + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $0 + local.get $2 + i32.add + i32.load16_u + local.tee $1 + i32.const 5760 + i32.lt_u + if + local.get $1 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $1 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 1 + local.get $1 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $1 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end else i32.const 0 end if - local.get $1 + local.get $2 i32.const 2 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end - local.get $1 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -20631,10 +22450,10 @@ local.get $0 return end + local.get $3 local.get $2 - local.get $1 i32.sub - local.tee $2 + local.tee $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -20645,16 +22464,16 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new local.tee $3 i32.store local.get $3 local.get $0 - local.get $1 - i32.add local.get $2 + i32.add + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -20665,11 +22484,22 @@ (func $~lib/string/String#trimEnd (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20681,30 +22511,92 @@ i32.shr_u i32.const 1 i32.shl - local.tee $2 - local.set $1 + local.tee $3 + local.set $2 loop $while-continue|0 - local.get $1 + local.get $2 if (result i32) - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.sub - i32.load16_u - call $~lib/util/string/isSpace + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $0 + local.get $2 + i32.add + i32.const 2 + i32.sub + i32.load16_u + local.tee $1 + i32.const 5760 + i32.lt_u + if + local.get $1 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $1 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 1 + local.get $1 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $1 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end else i32.const 0 end if - local.get $1 + local.get $2 i32.const 2 i32.sub - local.set $1 + local.set $2 br $while-continue|0 end end - local.get $1 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -20714,8 +22606,8 @@ i32.const 1712 return end - local.get $1 local.get $2 + local.get $3 i32.eq if global.get $~lib/memory/__stack_pointer @@ -20726,30 +22618,41 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 - local.get $0 local.get $1 + local.get $0 + 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 - local.get $2 + local.get $1 ) (func $~lib/string/String#trim (param $0 i32) (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 - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20759,59 +22662,181 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $1 - local.set $3 - local.get $1 + local.tee $4 i32.const 1 i32.shl - local.set $1 + local.set $2 loop $while-continue|0 - local.get $1 + local.get $2 if (result i32) - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.sub - i32.load16_u - call $~lib/util/string/isSpace + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $0 + local.get $2 + i32.add + i32.const 2 + i32.sub + i32.load16_u + local.tee $1 + i32.const 5760 + i32.lt_u + if + local.get $1 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $1 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 1 + local.get $1 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $1 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end else i32.const 0 end if - local.get $1 + local.get $2 i32.const 2 i32.sub - local.set $1 + local.set $2 br $while-continue|0 end end loop $while-continue|1 - local.get $1 local.get $2 + local.get $3 i32.gt_u if (result i32) - local.get $0 - local.get $2 - i32.add - i32.load16_u - call $~lib/util/string/isSpace + block $__inlined_func$~lib/util/string/isSpace0 (result i32) + local.get $0 + local.get $3 + i32.add + i32.load16_u + local.tee $1 + i32.const 5760 + i32.lt_u + if + local.get $1 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $1 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace0 + end + i32.const 1 + local.get $1 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace0 + drop + block $break|01 + block $case6|02 + local.get $1 + i32.const 5760 + i32.eq + br_if $case6|02 + local.get $1 + i32.const 8232 + i32.eq + br_if $case6|02 + local.get $1 + i32.const 8233 + i32.eq + br_if $case6|02 + local.get $1 + i32.const 8239 + i32.eq + br_if $case6|02 + local.get $1 + i32.const 8287 + i32.eq + br_if $case6|02 + local.get $1 + i32.const 12288 + i32.eq + br_if $case6|02 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|02 + br $break|01 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace0 + end + i32.const 0 + end else i32.const 0 end if - local.get $2 + local.get $3 i32.const 2 i32.add - local.set $2 - local.get $1 + local.set $3 + local.get $2 i32.const 2 i32.sub - local.set $1 + local.set $2 br $while-continue|1 end end - local.get $1 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -20822,12 +22847,12 @@ return end i32.const 0 - local.get $1 - local.get $3 + local.get $2 + local.get $4 i32.const 1 i32.shl i32.eq - local.get $2 + local.get $3 select if global.get $~lib/memory/__stack_pointer @@ -20838,22 +22863,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 local.get $0 - local.get $2 + local.get $3 i32.add - 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 - local.get $3 + local.get $1 ) (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -20863,11 +22888,21 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + 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 $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -20875,8 +22910,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 - local.get $0 + local.tee $3 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -20884,7 +22919,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.add local.tee $2 i32.eqz @@ -20925,28 +22960,41 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s - i64.mul - i64.const 268435456 - i64.gt_u + local.set $2 local.get $1 i32.const 0 i32.lt_s - select + if (result i32) + i32.const 1 + else + local.get $2 + i64.extend_i32_s + local.get $1 + i64.extend_i32_s + i64.mul + i64.const 268435456 + i64.gt_u + end if i32.const 13648 i32.const 1328 @@ -21012,7 +23060,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21144,29 +23202,39 @@ i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i64.const 0 i64.store block $folding-inner0 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $10 - local.get $0 + local.tee $4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 - i32.ge_u + local.tee $7 + i32.le_u if local.get $4 - local.get $10 + local.get $7 i32.ge_u if local.get $2 @@ -21185,16 +23253,16 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $5 - local.get $10 + local.set $3 + local.get $7 i32.eqz if - local.get $5 + local.get $3 i32.eqz br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $4 - local.get $5 + local.get $3 local.get $4 i32.const 1 i32.add @@ -21204,34 +23272,34 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store - local.get $3 - local.get $2 local.get $5 + local.get $2 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $5 + local.get $3 local.set $1 loop $for-loop|0 local.get $4 - local.get $8 + local.get $9 i32.gt_u if - local.get $3 + local.get $5 local.get $1 i32.const 1 i32.shl i32.add local.get $0 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.add i32.load16_u i32.store16 - local.get $3 + local.get $5 local.get $1 i32.const 1 i32.add @@ -21240,18 +23308,18 @@ i32.shl i32.add local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $1 - local.get $5 + local.get $3 i32.add local.set $1 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|0 end end @@ -21259,49 +23327,49 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end - local.get $5 - local.get $10 + local.get $3 + local.get $7 i32.eq if global.get $~lib/memory/__stack_pointer local.get $4 i32.const 1 i32.shl - local.tee $3 + local.tee $5 i32.const 1 call $~lib/rt/itcms/__new local.tee $4 i32.store local.get $4 local.get $0 - local.get $3 + local.get $5 call $~lib/memory/memory.copy loop $while-continue|1 local.get $0 local.get $1 - local.get $7 + local.get $10 call $~lib/string/String#indexOf - local.tee $3 + local.tee $5 i32.const -1 i32.xor if local.get $4 - local.get $3 + local.get $5 i32.const 1 i32.shl i32.add local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 - local.get $10 + local.get $5 + local.get $7 i32.add - local.set $7 + local.set $10 br $while-continue|1 end end @@ -21313,18 +23381,28 @@ return end local.get $4 - local.set $3 + local.set $5 loop $while-continue|2 local.get $0 local.get $1 - local.get $7 + local.get $10 call $~lib/string/String#indexOf - local.tee $8 + local.tee $9 i32.const -1 i32.xor if - local.get $6 - call $~lib/string/String.__not + local.get $11 + if (result i32) + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.eqz + else + i32.const 1 + end if global.get $~lib/memory/__stack_pointer local.get $4 @@ -21332,102 +23410,102 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $11 i32.store offset=4 end - local.get $3 local.get $5 - local.get $9 + local.get $3 local.get $8 - local.get $7 + local.get $9 + local.get $10 i32.sub - local.tee $11 + local.tee $6 i32.add i32.add i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $3 + local.get $11 + local.get $5 i32.const 1 i32.shl - local.tee $3 + local.tee $5 i32.const 1 i32.shl call $~lib/rt/itcms/__renew - local.tee $6 + local.tee $11 i32.store offset=4 end - local.get $6 - local.get $9 + local.get $11 + local.get $8 i32.const 1 i32.shl i32.add local.get $0 - local.get $7 + local.get $10 i32.const 1 i32.shl i32.add - local.get $11 + local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $6 - local.get $9 local.get $11 + local.get $6 + local.get $8 i32.add - local.tee $7 + local.tee $10 i32.const 1 i32.shl i32.add local.get $2 - local.get $5 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $5 - local.get $7 - i32.add - local.set $9 - local.get $8 + local.get $3 local.get $10 i32.add - local.set $7 + local.set $8 + local.get $7 + local.get $9 + i32.add + local.set $10 br $while-continue|2 end end - local.get $6 + local.get $11 if - local.get $3 - local.get $9 + local.get $5 + local.get $8 local.get $4 - local.get $7 + local.get $10 i32.sub local.tee $1 i32.add i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $3 + local.get $11 + local.get $5 i32.const 1 i32.shl - local.tee $3 + local.tee $5 i32.const 1 i32.shl call $~lib/rt/itcms/__renew - local.tee $6 + local.tee $11 i32.store offset=4 end local.get $1 if - local.get $6 - local.get $9 + local.get $11 + local.get $8 i32.const 1 i32.shl i32.add local.get $0 - local.get $7 + local.get $10 i32.const 1 i32.shl i32.add @@ -21436,27 +23514,27 @@ i32.shl call $~lib/memory/memory.copy end - local.get $3 + local.get $5 local.get $1 - local.get $9 + local.get $8 i32.add local.tee $0 i32.gt_u if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $11 local.get $0 i32.const 1 i32.shl call $~lib/rt/itcms/__renew - local.tee $6 + local.tee $11 i32.store offset=4 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $11 return end global.get $~lib/memory/__stack_pointer @@ -21478,7 +23556,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21574,7 +23662,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21654,7 +23752,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21756,7 +23864,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21800,13 +23918,26 @@ ) (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21843,39 +23974,83 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $3 + local.tee $5 select - local.set $0 + local.set $2 local.get $1 i32.const 10 i32.eq if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $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 $5 i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 local.get $0 local.get $1 - call $~lib/util/number/utoa_dec_simple + local.get $2 + call $~lib/util/number/utoa32_dec_lut else local.get $1 i32.const 16 i32.eq if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $5 i32.const 31 - local.get $0 + local.get $2 i32.clz i32.sub i32.const 2 @@ -21888,39 +24063,146 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store local.get $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else - local.get $0 i64.extend_i32_u + local.set $3 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $0 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16224 + i32.add + i32.load + i32.store + local.get $3 + i64.const 8 + i64.shr_u + local.set $3 + br $while-continue|0 + end + end local.get $1 - call $~lib/util/number/ulog_base - local.get $3 - i32.add - local.set $4 + i32.const 1 + i32.and + if + local.get $0 + local.get $3 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16224 + i32.add + i32.load16_u + i32.store16 + end + else global.get $~lib/memory/__stack_pointer - local.get $4 + block $__inlined_func$~lib/util/number/ulog_base (result i32) + local.get $2 + i64.extend_i32_u + local.tee $6 + local.set $3 + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $3 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base + end + local.get $1 + i64.extend_i32_s + local.tee $7 + local.set $4 + i32.const 1 + local.set $0 + loop $while-continue|00 + local.get $3 + local.get $4 + i64.ge_u + if + local.get $3 + local.get $4 + i64.div_u + local.set $3 + local.get $4 + local.get $4 + i64.mul + local.set $4 + local.get $0 + i32.const 1 + i32.shl + local.set $0 + br $while-continue|00 + end + end + loop $while-continue|1 + local.get $3 + i64.const 1 + i64.ge_u + if + local.get $3 + local.get $7 + i64.div_u + local.set $3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|1 + end + end + local.get $0 + i32.const 1 + i32.sub + end + local.get $5 + i32.add + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 local.get $0 - i64.extend_i32_u - local.get $4 + local.get $6 + local.get $2 local.get $1 call $~lib/util/number/utoa64_any_core end end - local.get $3 + local.get $5 if - local.get $2 + local.get $0 i32.const 45 i32.store16 end @@ -21928,16 +24210,29 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 ) (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (local $2 i64) (local $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21971,21 +24266,65 @@ i32.const 10 i32.eq if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + 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.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 - local.get $0 + local.get $3 local.get $1 - call $~lib/util/number/utoa_dec_simple + local.get $0 + call $~lib/util/number/utoa32_dec_lut else local.get $1 i32.const 16 @@ -22005,30 +24344,139 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 local.get $0 + i64.extend_i32_u + local.set $2 local.get $1 - call $~lib/util/number/utoa_hex_simple + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 2 + i32.ge_u + if + local.get $3 + local.get $0 + i32.const 2 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16224 + i32.add + i32.load + i32.store + local.get $2 + i64.const 8 + i64.shr_u + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 1 + i32.and + if + local.get $3 + local.get $2 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16224 + i32.add + i32.load16_u + i32.store16 + end else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $3 + block $__inlined_func$~lib/util/number/ulog_base (result i32) + local.get $0 + i64.extend_i32_u + local.tee $5 + local.set $2 + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $2 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base + end + local.get $1 + i64.extend_i32_s + local.tee $6 + local.set $4 + i32.const 1 + local.set $0 + loop $while-continue|00 + local.get $2 + local.get $4 + i64.ge_u + if + local.get $2 + local.get $4 + i64.div_u + local.set $2 + local.get $4 + local.get $4 + i64.mul + local.set $4 + local.get $0 + i32.const 1 + i32.shl + local.set $0 + br $while-continue|00 + end + end + loop $while-continue|1 + local.get $2 + i64.const 1 + i64.ge_u + if + local.get $2 + local.get $6 + i64.div_u + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|1 + end + end + local.get $0 + i32.const 1 + i32.sub + end + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 - local.get $0 - i64.extend_i32_u local.get $3 + local.get $5 + local.get $0 local.get $1 call $~lib/util/number/utoa64_any_core end @@ -22037,16 +24485,29 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) + (local $2 i64) (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -22084,39 +24545,130 @@ i64.const 4294967295 i64.le_u if + global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $5 + 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.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 local.get $3 + local.get $5 local.get $1 - call $~lib/util/number/utoa_dec_simple + call $~lib/util/number/utoa32_dec_lut else - local.get $0 - call $~lib/util/number/decimalCount64High - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 + 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.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $0 local.get $1 - call $~lib/util/number/utoa_dec_simple + call $~lib/util/number/utoa64_dec_lut end else local.get $1 @@ -22138,28 +24690,132 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 - local.get $0 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $3 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16224 + i32.add + i32.load + i32.store + local.get $0 + i64.const 8 + i64.shr_u + local.set $0 + br $while-continue|0 + end + end local.get $1 - call $~lib/util/number/utoa_hex_simple + i32.const 1 + i32.and + if + local.get $3 + local.get $0 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16224 + i32.add + i32.load16_u + i32.store16 + end else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $3 + block $__inlined_func$~lib/util/number/ulog_base (result i32) + local.get $0 + local.set $2 + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $2 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base + end + local.get $1 + i64.extend_i32_s + local.tee $6 + local.set $4 + i32.const 1 + local.set $3 + loop $while-continue|00 + local.get $2 + local.get $4 + i64.ge_u + if + local.get $2 + local.get $4 + i64.div_u + local.set $2 + local.get $4 + local.get $4 + i64.mul + local.set $4 + local.get $3 + i32.const 1 + i32.shl + local.set $3 + br $while-continue|00 + end + end + loop $while-continue|1 + local.get $2 + i64.const 1 + i64.ge_u + if + local.get $2 + local.get $6 + i64.div_u + local.set $2 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + i32.const 1 + i32.sub + end + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 - local.get $0 local.get $3 + local.get $0 + local.get $5 local.get $1 call $~lib/util/number/utoa64_any_core end @@ -22168,17 +24824,30 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -22216,7 +24885,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $3 + local.tee $4 select local.set $0 local.get $1 @@ -22227,43 +24896,134 @@ i64.const 4294967295 i64.le_u if + global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $4 - call $~lib/util/number/decimalCount32 - local.get $3 + 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.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $6 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 - local.get $4 local.get $1 - call $~lib/util/number/utoa_dec_simple + local.get $2 + local.get $6 + call $~lib/util/number/utoa32_dec_lut else + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/util/number/decimalCount64High - local.get $3 + 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 $4 i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 - local.get $0 local.get $1 - call $~lib/util/number/utoa_dec_simple + local.get $0 + local.get $2 + call $~lib/util/number/utoa64_dec_lut end else local.get $1 @@ -22271,7 +25031,7 @@ i32.eq if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 63 local.get $0 i64.clz @@ -22282,42 +25042,147 @@ i32.const 1 i32.add i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + loop $while-continue|0 + local.get $2 + i32.const 2 + i32.ge_u + if + local.get $1 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16224 + i32.add + i32.load + i32.store + local.get $0 + i64.const 8 + i64.shr_u + local.set $0 + br $while-continue|0 + end + end local.get $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple + i32.const 1 + i32.and + if + local.get $1 + local.get $0 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16224 + i32.add + i32.load16_u + i32.store16 + end else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.get $3 - i32.add - local.set $4 global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base (result i32) + local.get $0 + local.set $3 + local.get $1 + local.tee $2 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $3 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $2 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base + end + local.get $2 + i64.extend_i32_s + local.tee $7 + local.set $5 + i32.const 1 + local.set $1 + loop $while-continue|00 + local.get $3 + local.get $5 + i64.ge_u + if + local.get $3 + local.get $5 + i64.div_u + local.set $3 + local.get $5 + local.get $5 + i64.mul + local.set $5 + local.get $1 + i32.const 1 + i32.shl + local.set $1 + br $while-continue|00 + end + end + loop $while-continue|1 + local.get $3 + i64.const 1 + i64.ge_u + if + local.get $3 + local.get $7 + i64.div_u + local.set $3 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end + local.get $1 + i32.const 1 + i32.sub + end local.get $4 + i32.add + local.tee $6 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 - local.get $0 - local.get $4 local.get $1 + local.get $0 + local.get $6 + local.get $2 call $~lib/util/number/utoa64_any_core end end - local.get $3 + local.get $4 if - local.get $2 + local.get $1 i32.const 45 i32.store16 end @@ -22325,7 +25190,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) @@ -22334,7 +25199,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -22346,7 +25221,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 21344 + i32.const 22800 return end local.get $0 @@ -22371,7 +25246,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 8544 - i32.const 21376 + i32.const 22832 local.get $0 f64.const 0 f64.lt @@ -22390,7 +25265,7 @@ local.tee $2 i32.store local.get $2 - i32.const 21408 + i32.const 22864 local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 6c8b9aa8d1..9f7bff2bc6 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1,13 +1,12 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 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 $none_=>_i32 (func (result 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))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -98,29 +97,6 @@ (global $~started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/symbol/Symbol (result i32) - (local $0 i32) - global.get $~lib/symbol/nextId - local.tee $0 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $0 - i32.eqz - if - unreachable - end - local.get $0 - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -206,49 +182,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -273,7 +210,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -296,7 +233,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -306,15 +243,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -350,7 +292,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -657,12 +621,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1016,7 +980,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1079,7 +1048,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1159,7 +1133,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 19084 i32.ge_u if @@ -1169,19 +1143,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1198,11 +1172,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1212,10 +1189,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1236,28 +1215,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1354,243 +1333,44 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1136 - i32.const 1472 - i32.const 458 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 - i32.const 12 - i32.le_u - select - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 4 - memory.size - local.tee $1 - i32.const 16 - i32.shl + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add i32.const 4 i32.sub + local.tee $2 + i32.const 0 + i32.store8 offset=3 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 local.get $2 + i32.const 0 + i32.store8 offset=2 local.get $2 - i32.const 536870910 - i32.lt_u - select - 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 + i32.const 0 + i32.store8 offset=1 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 $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $2 - 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 $2 - 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 $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $3 - local.get $2 - 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 $2 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - 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 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 0 i32.store8 offset=3 local.get $2 @@ -1713,6 +1493,10 @@ ) (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 @@ -1730,12 +1514,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $2 + local.set $3 loop $do-continue|0 - local.get $2 + local.get $3 call $~lib/rt/itcms/step i32.sub - local.set $2 + local.set $3 global.get $~lib/rt/itcms/state i32.eqz if @@ -1751,13 +1535,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $2 + local.get $3 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $3 + local.get $3 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1771,560 +1556,640 @@ local.get $0 i32.const 16 i32.add - local.set $2 + 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 $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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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) - (local $4 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz + local.get $6 + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1200 - i32.const 294 - i32.const 14 + i32.const 1136 + i32.const 1472 + i32.const 458 + i32.const 30 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 + 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 - local.tee $3 - local.set $4 - local.get $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - 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 $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/map/Map<~lib/string/String,usize>#set:buckets (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/map/Map<~lib/string/String,usize>#set:entries (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - if (result i32) - local.get $0 - local.tee $1 - i32.const 20 + i32.const 4 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - i32.const 16 - i32.ge_u + 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) - i32.const 606290984 - local.set $2 - i32.const -2048144777 - local.set $4 - i32.const 1640531535 - local.set $5 - local.get $1 local.get $3 - i32.add - i32.const 16 - i32.sub - local.set $7 - loop $while-continue|0 - local.get $1 - local.get $7 - i32.le_u - if - local.get $2 - local.get $1 - i32.load - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $2 - local.get $4 - local.get $1 - i32.load offset=4 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $4 - local.get $6 - local.get $1 - i32.load offset=8 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $6 - local.get $5 - local.get $1 - i32.load offset=12 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $5 - local.get $1 - i32.const 16 - i32.add - local.set $1 - br $while-continue|0 - end - end + i32.const 1 + i32.const 27 local.get $3 - local.get $2 + i32.clz + i32.sub + i32.shl i32.const 1 - i32.rotl - local.get $4 - i32.const 7 - i32.rotl - i32.add - local.get $6 - i32.const 12 - i32.rotl - i32.add - local.get $5 - i32.const 18 - i32.rotl - i32.add + i32.sub i32.add else local.get $3 - i32.const 374761393 - i32.add end - local.set $2 - local.get $0 - local.get $3 - i32.add + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl i32.const 4 i32.sub - local.set $4 - loop $while-continue|1 - local.get $1 - local.get $4 - i32.le_u - if - local.get $2 - local.get $1 - i32.load - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.set $2 - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $0 - local.get $3 + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl i32.add - local.set $0 - loop $while-continue|2 - local.get $0 - local.get $1 - i32.gt_u + 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 - local.get $2 - local.get $1 - i32.load8_u - i32.const 374761393 - i32.mul - i32.add - i32.const 11 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|2 + unreachable end end local.get $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 + local.get $6 i32.const 16 - i32.shr_u - i32.xor - else + 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 + 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/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - local.get $0 local.get $1 - i32.eq + i32.eqz if - i32.const 1 return end - local.get $1 - i32.eqz - i32.const 1 local.get $0 - select + i32.eqz if i32.const 0 - return + i32.const 1200 + i32.const 294 + i32.const 14 + 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 $2 + global.get $~lib/rt/itcms/white local.get $1 i32.const 20 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq 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.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 i32.and - i32.or + local.tee $3 + global.get $~lib/rt/itcms/white i32.eqz - i32.const 0 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select + i32.eq if - loop $do-continue|0 - local.get $3 - i64.load + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else 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 - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end + call $~lib/rt/itcms/Object#makeGray end - end - loop $while-continue|1 - local.get $0 - local.tee $2 + else + global.get $~lib/rt/itcms/state i32.const 1 - i32.sub - local.set $0 - local.get $2 + i32.eq + i32.const 0 + local.get $3 + i32.const 3 + i32.eq + select if - local.get $3 - i32.load16_u - local.tee $2 local.get $1 - i32.load16_u - local.tee $4 - i32.ne + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + if (result i32) + local.get $0 + local.tee $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + i32.const 16 + i32.ge_u + if (result i32) + i32.const 606290984 + local.set $2 + i32.const -2048144777 + local.set $4 + i32.const 1640531535 + local.set $5 + local.get $1 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.set $7 + loop $while-continue|0 + local.get $1 + local.get $7 + i32.le_u if local.get $2 + local.get $1 + i32.load + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl + local.get $1 + i32.load offset=4 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $4 + local.get $6 + local.get $1 + i32.load offset=8 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $6 + local.get $5 + local.get $1 + i32.load offset=12 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $5 + local.get $1 + i32.const 16 + i32.add + local.set $1 + br $while-continue|0 end - local.get $3 - i32.const 2 + end + local.get $3 + local.get $2 + i32.const 1 + i32.rotl + local.get $4 + i32.const 7 + i32.rotl + i32.add + local.get $6 + i32.const 12 + i32.rotl + i32.add + local.get $5 + i32.const 18 + i32.rotl + i32.add + i32.add + else + local.get $3 + i32.const 374761393 + i32.add + end + local.set $2 + local.get $0 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -1028477379 + i32.mul i32.add - local.set $3 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $2 local.get $1 - i32.const 2 + i32.const 4 i32.add local.set $1 br $while-continue|1 end end + local.get $0 + local.get $3 + i32.add + local.set $0 + loop $while-continue|2 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $2 + local.get $1 + i32.load8_u + i32.const 374761393 + i32.mul + i32.add + i32.const 11 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|2 + end + end + local.get $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + else i32.const 0 end - i32.eqz ) - (func $~lib/map/Map<~lib/string/String,usize>#rehash (param $0 i32) (param $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 $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end local.get $1 + i32.eqz i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 local.get $0 - i32.load offset=8 - local.tee $8 + select + if + i32.const 0 + return + end local.get $0 + i32.const 20 + i32.sub i32.load offset=16 - i32.const 12 - 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=8 - i32.const 1 + 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 $4 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 i32.and + i32.or i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.load - local.tee $7 - i32.store offset=8 + else + i32.const 0 + end + if + loop $do-continue|0 local.get $2 - local.get $7 - i32.store + i64.load + local.get $3 + 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 $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if local.get $2 - local.get $8 - i32.load offset=4 - i32.store offset=4 + i32.load16_u + local.tee $1 + local.get $3 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $1 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH<~lib/string/String> - local.get $1 - i32.and i32.const 2 - i32.shl - i32.add - local.tee $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 i32.add local.set $2 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|1 end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 end + i32.const 0 end + i32.eqz + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - local.get $6 - call $~lib/map/Map<~lib/string/String,usize>#set:buckets + i32.load local.get $0 + i32.load offset=4 local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map<~lib/string/String,usize>#set:entries - 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/hash/HASH (param $0 i32) (result i32) - local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -2333,211 +2198,827 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load local.set $0 - loop $while-continue|0 - local.get $0 - if + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end if local.get $0 - return + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + i32.const 0 + local.set $0 end - i32.const 0 + local.get $0 + i32.eqz + if + i32.const 1648 + i32.const 1712 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 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 $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - 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 12 - 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 12 - 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 + local.get $1 + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $8 - i32.load offset=8 + local.get $0 + local.tee $3 i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $8 + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 i32.load - local.tee $7 i32.store - local.get $2 - local.get $8 + local.get $0 + local.get $1 i32.load offset=4 i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 + end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end local.get $1 - i32.and + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 i32.const 2 - i32.shl i32.add - local.tee $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 end - local.get $8 - i32.const 12 + local.get $1 + i32.load + local.set $5 + local.get $0 + local.tee $3 + i32.const 1 i32.add - local.set $8 - br $while-continue|0 - end + 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 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - local.get $6 - call $~lib/map/Map<~lib/string/String,usize>#set:buckets - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/map/Map<~lib/string/String,usize>#set:entries - 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#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 - i32.eqz + local.get $2 + i32.const 2 + i32.and if - i32.const 1648 - i32.const 1712 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 end - local.get $0 - i32.load offset=4 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2549,6 +3030,24 @@ 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 @@ -2614,530 +3113,1139 @@ br $while-continue|1 end end - end - loop $while-continue|2 - local.get $4 + 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/string/String.__concat (param $0 i32) (param $1 i32) (result 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 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + 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/string/String#concat + 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 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + i32.add + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1824 + local.set $2 + br $__inlined_func$~lib/string/String#concat + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + 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 $2 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $~lib/map/Map + block $~lib/map/Map<~lib/string/String,usize> + 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 $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 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 + call $~lib/rt/itcms/__visit end + return 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.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.tee $2 + local.tee $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 i32.and + i32.eqz 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 + i32.load + call $~lib/rt/itcms/__visit end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|0 end end - loop $while-continue|5 - local.get $4 + local.get $2 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.tee $2 + local.tee $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|00 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz 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 + i32.load offset=4 + call $~lib/rt/itcms/__visit end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|00 end end + local.get $2 + call $~lib/rt/itcms/__visit + return end + unreachable ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/symbol + ) + (func $~lib/map/Map<~lib/string/String,usize>#find (param $0 i32) (param $1 i32) (result i32) + (local $2 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 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + 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 + local.get $1 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.const 1056 + call $~lib/string/String.__eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + 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 0 + ) + (func $~lib/symbol/_Symbol.for (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 - local.get $0 - local.tee $2 - 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 $0 - i32.eqz + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/symbol/stringToId if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $1 + i32.store + local.get $1 + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,usize>#find + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $1 + i32.store + local.get $1 + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,usize>#find + local.tee $1 + i32.eqz + if + i32.const 1648 + i32.const 1712 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + else + 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 2700 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 3 + i32.store offset=4 + local.get $1 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=8 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 4 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1824 - local.set $0 - br $__inlined_func$~lib/string/String#concat + local.get $1 + global.set $~lib/symbol/stringToId + 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 2700 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 3 + i32.store offset=4 + local.get $1 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=8 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 4 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + 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 + global.set $~lib/symbol/idToString end - global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/symbol/nextId + local.tee $3 i32.const 1 - call $~lib/rt/itcms/__new + i32.add + global.set $~lib/symbol/nextId + local.get $3 + i32.eqz + if + unreachable + end + global.get $~lib/memory/__stack_pointer local.tee $0 + global.get $~lib/symbol/stringToId + local.tee $1 i32.store local.get $0 - local.get $2 - local.get $3 - call $~lib/memory/memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - block $invalid - block $~lib/map/Map - block $~lib/map/Map<~lib/string/String,usize> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer + global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + local.tee $6 + call $~lib/map/Map<~lib/string/String,usize>#find + local.tee $0 + if + local.get $0 + local.get $3 + i32.store offset=4 + else + local.get $1 + i32.load offset=16 + local.get $1 + i32.load offset=12 + i32.eq + if + local.get $1 + i32.load offset=20 + local.get $1 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $1 + i32.load offset=4 + else + local.get $1 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $4 + 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 2700 + 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 0 + i32.store offset=8 + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $0 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $2 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.tee $10 + local.get $1 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $9 + local.get $2 + local.set $0 + loop $while-continue|0 + local.get $9 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.load + local.tee $7 + i32.store offset=8 local.get $0 - i32.const 8 - i32.sub + local.get $7 + i32.store + local.get $0 + local.get $10 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $8 + local.get $7 + call $~lib/util/hash/HASH<~lib/string/String> + local.get $4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid + i32.store offset=8 + local.get $7 + local.get $0 + i32.store + local.get $0 + i32.const 12 + i32.add + local.set $0 end - return + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit end - return + local.get $1 + local.get $8 + i32.store + local.get $1 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $5 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.load offset=8 - local.tee $2 - local.tee $1 - local.get $0 + local.tee $0 + i32.store + local.get $1 + local.get $1 i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $0 + local.get $4 i32.const 12 i32.mul i32.add - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.gt_u - if - local.get $1 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - i32.load - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 12 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $2 - call $~lib/rt/itcms/__visit - return + local.tee $0 + i32.const 1056 + i32.store + local.get $1 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $1 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + local.get $1 + i32.load + local.get $6 + local.get $1 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load + i32.store offset=8 + local.get $1 + local.get $0 + i32.store end + 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 + global.get $~lib/symbol/idToString + local.tee $0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=8 + local.get $3 local.tee $2 - local.tee $1 - local.get $0 - i32.load offset=16 - i32.const 12 + i32.const -1028477379 i32.mul + i32.const 374761397 i32.add - local.set $0 - loop $while-continue|00 - local.get $0 - local.get $1 - i32.gt_u - if - local.get $1 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - i32.load offset=4 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 12 - i32.add - local.set $1 - br $while-continue|00 - end - end - local.get $2 - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/symbol - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 2700 - i32.lt_s - if - i32.const 19104 - i32.const 19152 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/map/Map<~lib/string/String,usize>#find (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load - local.get $1 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $7 local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|01 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $1 + br $while-continue|01 + end + end + i32.const 0 + local.set $1 + end + local.get $1 if + local.get $1 + i32.const 1056 + i32.store offset=4 local.get $0 - i32.load offset=8 - local.tee $2 + i32.const 1056 i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__link + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if local.get $0 - i32.load + i32.load offset=20 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $3 + 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 2700 + 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 $3 + i32.const 1 + i32.add + local.tee $1 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1056 - call $~lib/string/String.__eq - end - if + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $4 + local.set $1 + loop $while-continue|02 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + local.get $10 + i32.load + local.tee $9 + i32.store + local.get $1 + local.get $10 + i32.load offset=4 + i32.store offset=4 + local.get $1 + local.get $8 + local.get $3 + local.get $9 + i32.const -1028477379 + i32.mul + i32.const 374761397 + 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=8 + local.get $9 + local.get $1 + i32.store + local.get $1 + i32.const 12 + i32.add + local.set $1 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|02 + end + end + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + local.get $6 + 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 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - return end - local.get $2 - i32.const -2 - i32.and - local.set $0 - 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 0 - ) - (func $~lib/symbol/_Symbol.for (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/symbol/stringToId - if - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $0 - i32.store - local.get $0 - i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,usize>#find - if global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $0 + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $1 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $1 + local.get $2 i32.store + local.get $1 + i32.const 1056 + i32.store offset=4 local.get $0 i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,usize>#find - local.tee $0 - i32.eqz - if - i32.const 1648 - i32.const 1712 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $1 + local.get $0 + i32.load + local.get $7 local.get $0 i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - return - end - else - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map<~lib/string/String,usize>#set:buckets - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map<~lib/string/String,usize>#set:entries - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $~lib/symbol/stringToId - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map<~lib/string/String,usize>#set:buckets - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map<~lib/string/String,usize>#set:entries - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $~lib/symbol/idToString + local.get $2 + return end - global.get $~lib/symbol/nextId - local.tee $0 + i32.const 19104 + i32.const 19152 i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $0 - i32.eqz - if - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $1 - i32.store - local.get $1 - local.get $0 - call $~lib/map/Map<~lib/string/String,usize>#set - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/idToString - local.tee $1 - i32.store - local.get $1 - local.get $0 - call $~lib/map/Map#set - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3148,8 +4256,72 @@ local.tee $1 i32.store local.get $1 + i32.load + local.get $1 + i32.load offset=4 local.get $0 - call $~lib/map/Map#has + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $2 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 else i32.const 0 end @@ -3172,20 +4344,32 @@ (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + 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 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=8 i32.const 1824 - local.set $1 - global.get $~lib/memory/__stack_pointer + local.set $2 + local.get $1 i32.const 1824 i32.store block $break|0 @@ -3207,77 +4391,77 @@ br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 end i32.const 1856 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 1856 i32.store br $break|0 end i32.const 1904 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 1904 i32.store br $break|0 end i32.const 1968 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 1968 i32.store br $break|0 end i32.const 2016 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 2016 i32.store br $break|0 end i32.const 2048 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 2048 i32.store br $break|0 end i32.const 2096 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 2096 i32.store br $break|0 end i32.const 2128 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 2128 i32.store br $break|0 end i32.const 2176 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 2176 i32.store br $break|0 end i32.const 2208 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 2208 i32.store br $break|0 end i32.const 2256 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 2256 i32.store br $break|0 end i32.const 2304 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 2304 i32.store @@ -3287,24 +4471,89 @@ if (result i32) global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/idToString - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $2 + local.get $1 + i32.load + local.get $1 + i32.load offset=4 local.get $0 - call $~lib/map/Map#has + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + local.get $1 + i32.load + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $3 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + local.set $1 + end + local.get $1 else i32.const 0 end if global.get $~lib/memory/__stack_pointer + local.tee $2 global.get $~lib/symbol/idToString local.tee $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 local.get $0 call $~lib/map/Map#get - local.tee $1 + local.tee $2 i32.store end end @@ -3312,13 +4561,14 @@ i32.const 2352 i32.store offset=12 i32.const 2352 - local.get $1 + local.get $2 call $~lib/string/String.__concat local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2400 i32.store offset=8 local.get $0 @@ -3336,22 +4586,53 @@ i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + 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 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store - call $~lib/symbol/Symbol + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $0 + i32.eqz + if + unreachable + end + local.get $0 global.set $std/symbol/sym1 global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store - call $~lib/symbol/Symbol + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $0 + i32.eqz + if + unreachable + end + local.get $0 global.set $std/symbol/sym2 global.get $std/symbol/sym1 global.get $std/symbol/sym2 @@ -3372,14 +4653,29 @@ 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 1056 @@ -3461,13 +4757,14 @@ local.get $0 global.set $std/symbol/key4 global.get $~lib/memory/__stack_pointer - global.get $std/symbol/key3 local.tee $0 + global.get $std/symbol/key3 + local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -3480,14 +4777,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - global.get $std/symbol/key3 local.tee $0 + global.get $std/symbol/key3 + local.tee $1 i32.store local.get $0 - global.get $~lib/memory/__stack_pointer global.get $std/symbol/key4 local.tee $0 i32.store offset=8 + local.get $1 local.get $0 call $~lib/string/String.__eq i32.eqz @@ -3499,13 +4797,24 @@ call $~lib/builtins/abort unreachable end - call $~lib/symbol/Symbol + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $0 + i32.eqz + if + unreachable + end + local.get $0 call $~lib/symbol/_Symbol#toString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2432 i32.store offset=8 local.get $0 @@ -3524,9 +4833,10 @@ call $~lib/symbol/_Symbol#toString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2480 i32.store offset=8 local.get $0 @@ -3547,9 +4857,10 @@ call $~lib/symbol/_Symbol#toString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2528 i32.store offset=8 local.get $0 @@ -3568,9 +4879,10 @@ call $~lib/symbol/_Symbol#toString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2592 i32.store offset=8 local.get $0 @@ -3596,7 +4908,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3626,223 +4948,4 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/map/Map<~lib/string/String,usize>#set (param $0 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String> - local.tee $3 - call $~lib/map/Map<~lib/string/String,usize>#find - local.tee $2 - if - local.get $2 - local.get $1 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map<~lib/string/String,usize>#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $2 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $2 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map#set (param $0 i32) (param $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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $3 - call $~lib/map/Map#find - local.tee $2 - if - local.get $2 - i32.const 1056 - i32.store offset=4 - local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/rt/itcms/__link - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $2 - i32.store - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1056 - i32.store offset=4 - local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index 1f67e01c61..ea66e96a84 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -26,15 +26,13 @@ (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~start + (local $0 i32) global.get $~started if return end i32.const 1 global.set $~started - call $start:std/trace - ) - (func $start:std/trace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -51,9 +49,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store i32.const 1056 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index d582f9817b..0513b65e37 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -1,37 +1,33 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param 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_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i64_i32_i32_=>_i32 (func (param i64 i32 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_i64_=>_i32 (func (param i64 i64) (result i32))) (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $f64_f64_i32_i32_=>_f64 (func (param f64 f64 i32 i32) (result f64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $f32_i32_i32_=>_none (func (param f32 i32 i32))) (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_i32_i32_=>_f32 (func (param f32 i32 i32) (result f32))) + (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $f64_i32_i32_=>_f64 (func (param f64 i32 i32) (result f64))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) @@ -40,9 +36,6 @@ (type $none_=>_i32 (func (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) (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))) (memory $0 1) @@ -383,232 +376,235 @@ (data (i32.const 7224) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 7276) "\1c") (data (i32.const 7288) "\01\00\00\00\02\00\00\000") - (data (i32.const 7308) "\\") - (data (i32.const 7320) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 7404) "\1c") - (data (i32.const 7416) "\01\00\00\00\02\00\00\00,") - (data (i32.const 7436) ",") - (data (i32.const 7448) "\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") - (data (i32.const 7484) "\1c") - (data (i32.const 7496) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 7516) "\1c") - (data (i32.const 7528) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 7548) ",") - (data (i32.const 7560) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7596) ",") - (data (i32.const 7608) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7704) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\00\10#\00\00\10#\00\00\18\00\00\00\03") - (data (i32.const 9052) "\1c") - (data (i32.const 9068) "\03\00\00\00\92\91\90") - (data (i32.const 9084) ",") - (data (i32.const 9096) "\0f\00\00\00\10\00\00\00p#\00\00p#\00\00\03\00\00\00\03") - (data (i32.const 9132) "\1c") - (data (i32.const 9148) "\n\00\00\00\01\02\03") - (data (i32.const 9164) ",") - (data (i32.const 9176) "\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") - (data (i32.const 9212) "\1c") - (data (i32.const 9228) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9244) "\1c") - (data (i32.const 9260) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9276) "\1c") - (data (i32.const 9292) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9308) "\1c") - (data (i32.const 9324) "\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9340) "\1c") - (data (i32.const 9356) "\n\00\00\00\01\02\03") - (data (i32.const 9372) ",") - (data (i32.const 9384) "\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") - (data (i32.const 9420) "\1c") - (data (i32.const 9436) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9452) "\1c") - (data (i32.const 9468) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9484) "\1c") - (data (i32.const 9500) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9516) "\1c") - (data (i32.const 9532) "\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9548) "\1c") - (data (i32.const 9564) "\n\00\00\00\01\02\03") - (data (i32.const 9580) "<") - (data (i32.const 9592) "\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") - (data (i32.const 9644) "\1c") - (data (i32.const 9660) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9676) "\1c") - (data (i32.const 9692) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9708) "\1c") - (data (i32.const 9724) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9740) "\1c") - (data (i32.const 9756) "\n\00\00\00defg\ff\ff\ff") - (data (i32.const 9772) ",") - (data (i32.const 9788) "\14\00\00\00\01\00\02\00\03") - (data (i32.const 9820) ",") - (data (i32.const 9832) "\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") - (data (i32.const 9868) ",") - (data (i32.const 9884) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 9916) ",") - (data (i32.const 9932) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 9964) ",") - (data (i32.const 9980) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 10012) ",") - (data (i32.const 10028) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 10060) ",") - (data (i32.const 10076) "\14\00\00\00\01\00\02\00\03") - (data (i32.const 10108) ",") - (data (i32.const 10120) "\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") - (data (i32.const 10156) ",") - (data (i32.const 10172) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 9016) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9052) ",") + (data (i32.const 9064) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9160) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\00\c0(\00\00\c0(\00\00\18\00\00\00\03") + (data (i32.const 10508) "\1c") + (data (i32.const 10524) "\03\00\00\00\92\91\90") + (data (i32.const 10540) ",") + (data (i32.const 10552) "\0f\00\00\00\10\00\00\00 )\00\00 )\00\00\03\00\00\00\03") + (data (i32.const 10588) "\1c") + (data (i32.const 10604) "\n\00\00\00\01\02\03") + (data (i32.const 10620) ",") + (data (i32.const 10632) "\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") + (data (i32.const 10668) "\1c") + (data (i32.const 10684) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 10700) "\1c") + (data (i32.const 10716) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 10732) "\1c") + (data (i32.const 10748) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 10764) "\1c") + (data (i32.const 10780) "\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 10796) "\1c") + (data (i32.const 10812) "\n\00\00\00\01\02\03") + (data (i32.const 10828) ",") + (data (i32.const 10840) "\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") + (data (i32.const 10876) "\1c") + (data (i32.const 10892) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 10908) "\1c") + (data (i32.const 10924) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 10940) "\1c") + (data (i32.const 10956) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 10972) "\1c") + (data (i32.const 10988) "\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 11004) "\1c") + (data (i32.const 11020) "\n\00\00\00\01\02\03") + (data (i32.const 11036) "<") + (data (i32.const 11048) "\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") + (data (i32.const 11100) "\1c") + (data (i32.const 11116) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 11132) "\1c") + (data (i32.const 11148) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 11164) "\1c") + (data (i32.const 11180) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 11196) "\1c") + (data (i32.const 11212) "\n\00\00\00defg\ff\ff\ff") + (data (i32.const 11228) ",") + (data (i32.const 11244) "\14\00\00\00\01\00\02\00\03") + (data (i32.const 11276) ",") + (data (i32.const 11288) "\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") + (data (i32.const 11324) ",") + (data (i32.const 11340) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 11372) ",") + (data (i32.const 11388) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data (i32.const 11420) ",") + (data (i32.const 11436) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data (i32.const 11468) ",") + (data (i32.const 11484) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 11516) ",") + (data (i32.const 11532) "\14\00\00\00\01\00\02\00\03") + (data (i32.const 11564) ",") + (data (i32.const 11576) "\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") + (data (i32.const 11612) ",") + (data (i32.const 11628) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 11660) ",") + (data (i32.const 11676) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data (i32.const 11708) ",") + (data (i32.const 11724) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data (i32.const 11756) ",") + (data (i32.const 11772) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 11804) "<") + (data (i32.const 11820) "(\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 11868) ",") + (data (i32.const 11880) "\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 11916) "<") + (data (i32.const 11932) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 11980) "<") + (data (i32.const 11996) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 12044) "<") + (data (i32.const 12060) "(\00\00\00\01\00\00\00\02") + (data (i32.const 12084) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 12108) "<") + (data (i32.const 12124) "(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data (i32.const 12172) "<") + (data (i32.const 12188) "(\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 12236) ",") + (data (i32.const 12248) "\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 12284) "<") + (data (i32.const 12300) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 12348) "<") + (data (i32.const 12364) "(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") (data (i32.const 12412) "<") - (data (i32.const 12428) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") + (data (i32.const 12428) "(\00\00\00\01\00\00\00\02") + (data (i32.const 12452) "\06\00\00\00\07\00\00\00\08\00\00\00\t") (data (i32.const 12476) "<") - (data (i32.const 12492) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") - (data (i32.const 12540) "<") - (data (i32.const 12556) "(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") - (data (i32.const 12604) "l") - (data (i32.const 12620) "P") - (data (i32.const 12630) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 12716) ",") - (data (i32.const 12728) "\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 12764) "l") - (data (i32.const 12780) "P") - (data (i32.const 12790) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") - (data (i32.const 12876) "l") - (data (i32.const 12892) "P") - (data (i32.const 12902) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") - (data (i32.const 12988) "l") - (data (i32.const 13004) "P") - (data (i32.const 13014) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") - (data (i32.const 13100) "\1c") - (data (i32.const 13116) "\n\00\00\00\00\ff\00\00\00d\n\ff\ff") - (data (i32.const 13132) "\1c") - (data (i32.const 13148) "\n\00\00\00\01\ffd\ff\00\00d\n\ff") - (data (i32.const 13164) "\1c") - (data (i32.const 13176) "E\00\00\00\08\00\00\00{") - (data (i32.const 13196) "\1c") - (data (i32.const 13208) "E\00\00\00\08\00\00\00|") - (data (i32.const 13228) "\1c") - (data (i32.const 13240) "F\00\00\00\08\00\00\00}") - (data (i32.const 13260) "\1c") - (data (i32.const 13272) "F\00\00\00\08\00\00\00~") - (data (i32.const 13292) "\1c") - (data (i32.const 13304) "F\00\00\00\08\00\00\00\7f") - (data (i32.const 13324) "\1c") - (data (i32.const 13336) "F\00\00\00\08\00\00\00\80") - (data (i32.const 13356) "\1c") - (data (i32.const 13368) "G\00\00\00\08\00\00\00\81") - (data (i32.const 13388) "\1c") - (data (i32.const 13400) "G\00\00\00\08\00\00\00\82") - (data (i32.const 13420) "\1c") - (data (i32.const 13432) "H\00\00\00\08\00\00\00\83") - (data (i32.const 13452) "\1c") - (data (i32.const 13464) "H\00\00\00\08\00\00\00\84") - (data (i32.const 13484) "\1c") - (data (i32.const 13496) "I\00\00\00\08\00\00\00\85") - (data (i32.const 13516) "\1c") - (data (i32.const 13528) "I\00\00\00\08\00\00\00\86") - (data (i32.const 13548) "\1c") - (data (i32.const 13560) "J\00\00\00\08\00\00\00\87") - (data (i32.const 13580) "\1c") - (data (i32.const 13592) "J\00\00\00\08\00\00\00\88") - (data (i32.const 13612) "\1c") - (data (i32.const 13624) "K\00\00\00\08\00\00\00\89") - (data (i32.const 13644) "\1c") - (data (i32.const 13656) "K\00\00\00\08\00\00\00\8a") - (data (i32.const 13676) "\1c") - (data (i32.const 13688) "L\00\00\00\08\00\00\00\8b") - (data (i32.const 13708) "\1c") - (data (i32.const 13720) "L\00\00\00\08\00\00\00\8c") - (data (i32.const 13740) "\1c") - (data (i32.const 13752) "M\00\00\00\08\00\00\00\8d") - (data (i32.const 13772) "\1c") - (data (i32.const 13784) "M\00\00\00\08\00\00\00\8e") - (data (i32.const 13804) "\1c") - (data (i32.const 13816) "\0e\00\00\00\08\00\00\00\8f") - (data (i32.const 13840) "N\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 13868) "A\08\00\00\02\00\00\00A\00\00\00\02\00\00\00A\00\00\00\02\00\00\00\81\08\00\00\02\00\00\00\81\00\00\00\02\00\00\00\01\t\00\00\02\00\00\00\01\01\00\00\02\00\00\00\01\n\00\00\02\00\00\00\01\02\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\1a\00\00\02") - (data (i32.const 13964) "B\08\00\00\00\00\00\00\02\t") - (data (i32.const 14332) "\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02") + (data (i32.const 12492) "(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data (i32.const 12540) "l") + (data (i32.const 12556) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data (i32.const 12652) ",") + (data (i32.const 12664) "\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 12700) "l") + (data (i32.const 12716) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data (i32.const 12812) "l") + (data (i32.const 12828) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data (i32.const 12924) "l") + (data (i32.const 12940) "P\00\00\00\01\00\00\00\00\00\00\00\02") + (data (i32.const 12984) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data (i32.const 13036) "l") + (data (i32.const 13052) "P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 13148) "l") + (data (i32.const 13164) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data (i32.const 13260) ",") + (data (i32.const 13272) "\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 13308) "l") + (data (i32.const 13324) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data (i32.const 13420) "l") + (data (i32.const 13436) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data (i32.const 13532) "l") + (data (i32.const 13548) "P\00\00\00\01\00\00\00\00\00\00\00\02") + (data (i32.const 13592) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data (i32.const 13644) "l") + (data (i32.const 13660) "P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 13756) "<") + (data (i32.const 13772) "(\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data (i32.const 13820) ",") + (data (i32.const 13832) "\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 13868) "<") + (data (i32.const 13884) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") + (data (i32.const 13932) "<") + (data (i32.const 13948) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") + (data (i32.const 13996) "<") + (data (i32.const 14012) "(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") + (data (i32.const 14060) "l") + (data (i32.const 14076) "P") + (data (i32.const 14086) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data (i32.const 14172) ",") + (data (i32.const 14184) "\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 14220) "l") + (data (i32.const 14236) "P") + (data (i32.const 14246) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") + (data (i32.const 14332) "l") + (data (i32.const 14348) "P") + (data (i32.const 14358) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") + (data (i32.const 14444) "l") + (data (i32.const 14460) "P") + (data (i32.const 14470) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") + (data (i32.const 14556) "\1c") + (data (i32.const 14572) "\n\00\00\00\00\ff\00\00\00d\n\ff\ff") + (data (i32.const 14588) "\1c") + (data (i32.const 14604) "\n\00\00\00\01\ffd\ff\00\00d\n\ff") + (data (i32.const 14620) "\1c") + (data (i32.const 14632) "E\00\00\00\08\00\00\00{") + (data (i32.const 14652) "\1c") + (data (i32.const 14664) "E\00\00\00\08\00\00\00|") + (data (i32.const 14684) "\1c") + (data (i32.const 14696) "F\00\00\00\08\00\00\00}") + (data (i32.const 14716) "\1c") + (data (i32.const 14728) "F\00\00\00\08\00\00\00~") + (data (i32.const 14748) "\1c") + (data (i32.const 14760) "F\00\00\00\08\00\00\00\7f") + (data (i32.const 14780) "\1c") + (data (i32.const 14792) "F\00\00\00\08\00\00\00\80") + (data (i32.const 14812) "\1c") + (data (i32.const 14824) "G\00\00\00\08\00\00\00\81") + (data (i32.const 14844) "\1c") + (data (i32.const 14856) "G\00\00\00\08\00\00\00\82") + (data (i32.const 14876) "\1c") + (data (i32.const 14888) "H\00\00\00\08\00\00\00\83") + (data (i32.const 14908) "\1c") + (data (i32.const 14920) "H\00\00\00\08\00\00\00\84") + (data (i32.const 14940) "\1c") + (data (i32.const 14952) "I\00\00\00\08\00\00\00\85") + (data (i32.const 14972) "\1c") + (data (i32.const 14984) "I\00\00\00\08\00\00\00\86") + (data (i32.const 15004) "\1c") + (data (i32.const 15016) "J\00\00\00\08\00\00\00\87") + (data (i32.const 15036) "\1c") + (data (i32.const 15048) "J\00\00\00\08\00\00\00\88") + (data (i32.const 15068) "\1c") + (data (i32.const 15080) "K\00\00\00\08\00\00\00\89") + (data (i32.const 15100) "\1c") + (data (i32.const 15112) "K\00\00\00\08\00\00\00\8a") + (data (i32.const 15132) "\1c") + (data (i32.const 15144) "L\00\00\00\08\00\00\00\8b") + (data (i32.const 15164) "\1c") + (data (i32.const 15176) "L\00\00\00\08\00\00\00\8c") + (data (i32.const 15196) "\1c") + (data (i32.const 15208) "M\00\00\00\08\00\00\00\8d") + (data (i32.const 15228) "\1c") + (data (i32.const 15240) "M\00\00\00\08\00\00\00\8e") + (data (i32.const 15260) "\1c") + (data (i32.const 15272) "\0e\00\00\00\08\00\00\00\8f") + (data (i32.const 15296) "N\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 15324) "A\08\00\00\02\00\00\00A\00\00\00\02\00\00\00A\00\00\00\02\00\00\00\81\08\00\00\02\00\00\00\81\00\00\00\02\00\00\00\01\t\00\00\02\00\00\00\01\01\00\00\02\00\00\00\01\n\00\00\02\00\00\00\01\02\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\1a\00\00\02") + (data (i32.const 15420) "B\08\00\00\00\00\00\00\02\t") + (data (i32.const 15788) "\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02") (table $0 144 funcref) (elem (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -630,18 +626,9 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30852)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32308)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -651,15 +638,15 @@ call $~lib/rt/itcms/__visit i32.const 7024 call $~lib/rt/itcms/__visit - i32.const 8768 + i32.const 10224 call $~lib/rt/itcms/__visit - i32.const 8848 + i32.const 10304 call $~lib/rt/itcms/__visit - i32.const 8928 + i32.const 10384 call $~lib/rt/itcms/__visit - i32.const 9024 + i32.const 10480 call $~lib/rt/itcms/__visit - i32.const 9104 + i32.const 10560 call $~lib/rt/itcms/__visit i32.const 1360 call $~lib/rt/itcms/__visit @@ -667,7 +654,9 @@ call $~lib/rt/itcms/__visit i32.const 1168 call $~lib/rt/itcms/__visit - i32.const 7328 + i32.const 7728 + call $~lib/rt/itcms/__visit + i32.const 8784 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -707,49 +696,10 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 global.get $~lib/rt/itcms/iter i32.eq @@ -774,12 +724,12 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 local.get $0 - i32.const 30852 + i32.const 32308 i32.lt_u local.get $0 i32.load offset=8 @@ -797,7 +747,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -807,15 +757,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $2 + local.get $1 i32.store offset=8 + local.get $1 local.get $2 local.get $1 - call $~lib/rt/itcms/Object#set:next + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $0 global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 local.tee $1 @@ -825,7 +780,7 @@ i32.const 1 else local.get $1 - i32.const 13840 + i32.const 15296 i32.load i32.gt_u if @@ -839,7 +794,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 13844 + i32.const 15300 i32.add i32.load i32.const 32 @@ -851,7 +806,29 @@ else i32.const 2 end - call $~lib/rt/itcms/Object#linkTo + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -1158,12 +1135,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1413,10 +1390,10 @@ if unreachable end - i32.const 30864 + i32.const 32320 i32.const 0 i32.store - i32.const 32432 + i32.const 33888 i32.const 0 i32.store loop $for-loop|0 @@ -1427,7 +1404,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 30864 + i32.const 32320 i32.add i32.const 0 i32.store offset=4 @@ -1445,7 +1422,7 @@ i32.add i32.const 2 i32.shl - i32.const 30864 + i32.const 32320 i32.add i32.const 0 i32.store offset=96 @@ -1463,20 +1440,20 @@ br $for-loop|0 end end - i32.const 30864 - i32.const 32436 + i32.const 32320 + i32.const 33892 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 30864 + i32.const 32320 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 30852 + i32.const 32308 i32.lt_u if return @@ -1517,12 +1494,15 @@ unreachable end local.get $1 - local.get $1 + local.tee $0 i32.load i32.const 1 i32.or - i32.store + local.set $1 + local.get $0 local.get $1 + i32.store + local.get $0 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) @@ -1569,7 +1549,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1600,7 +1585,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 30852 + i32.const 32308 i32.lt_u if local.get $0 @@ -1632,7 +1617,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1690,7 +1680,7 @@ unreachable end local.get $0 - i32.const 30852 + i32.const 32308 i32.lt_u if local.get $0 @@ -1718,10 +1708,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1742,28 +1734,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1876,23 +1868,43 @@ unreachable end local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub + local.tee $2 local.get $1 i32.const 12 i32.le_u - select - local.tee $2 + 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 @@ -1900,25 +1912,10 @@ i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1945,7 +1942,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1953,8 +1950,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1967,7 +1964,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -1981,13 +1978,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.set $3 - local.get $2 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -2003,33 +2000,33 @@ local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.add i32.add - local.tee $2 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else local.get $1 @@ -2059,18 +2056,6 @@ end local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - 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 - i32.const 4 - i32.add - ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) @@ -2208,8 +2193,8 @@ local.set $2 local.get $0 i64.extend_i32_u - local.get $0 - i64.extend_i32_u + local.tee $4 + local.get $4 i64.const 32 i64.shl i64.or @@ -2246,6 +2231,7 @@ ) (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 @@ -2290,7 +2276,8 @@ br_if $do-continue|0 end global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -2304,19 +2291,44 @@ local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + 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 - local.get $2 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 - call $~lib/rt/itcms/Object#linkTo + 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 @@ -2336,7 +2348,6 @@ local.get $1 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 i32.eqz if @@ -2369,8 +2380,6 @@ i32.const 3 i32.and local.tee $0 - local.set $2 - local.get $0 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -2382,7 +2391,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -2393,40 +2402,43 @@ end end ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - ) (func $std/typedarray/testInstantiate (param $0 i32) (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 44 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=16 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=24 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=32 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 0 i32.store offset=40 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 call $~lib/typedarray/Int8Array#constructor local.tee $1 @@ -3011,7 +3023,17 @@ i32.const 2 i32.shl local.tee $3 - call $~lib/rt/tlsf/__alloc + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $6 i32.const 0 local.get $3 @@ -3252,139 +3274,142 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f64) + (local $5 i32) (local $6 f64) - (local $7 i32) + (local $7 f64) (local $8 i32) block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $0 - local.tee $2 + local.tee $3 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $8 + local.tee $2 i32.const 1 i32.le_u br_if $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - local.get $8 + local.set $0 + local.get $2 i32.const 2 i32.eq if - local.get $4 + local.get $0 f64.load offset=8 - local.set $5 - local.get $4 - f64.load local.set $6 + local.get $0 + f64.load + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $5 local.get $6 + local.get $7 local.get $1 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if - local.get $4 - local.get $6 + local.get $0 + local.get $7 f64.store offset=8 - local.get $4 - local.get $5 + local.get $0 + local.get $6 f64.store end br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $8 + local.get $2 + local.tee $4 i32.const 256 - i32.lt_u + i32.lt_s if + local.get $0 + local.set $2 local.get $1 - local.set $3 + local.set $5 loop $for-loop|0 - local.get $7 + local.get $4 local.get $8 - i32.lt_s + i32.gt_s if - local.get $4 - local.get $7 + local.get $2 + local.get $8 i32.const 3 i32.shl i32.add f64.load - local.set $5 - local.get $7 + local.set $6 + local.get $8 i32.const 1 i32.sub - local.set $1 + local.set $0 loop $while-continue|1 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if block $while-break|1 - local.get $4 - local.get $1 + local.get $2 + local.get $0 i32.const 3 i32.shl i32.add f64.load - local.set $6 + local.set $7 i32.const 2 global.set $~argumentsLength - local.get $5 local.get $6 - local.get $3 + local.get $7 + local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $4 - local.get $0 + local.set $0 + local.get $2 + local.get $1 i32.const 1 i32.add i32.const 3 i32.shl i32.add - local.get $6 + local.get $7 f64.store br $while-continue|1 end end end - local.get $4 - local.get $1 + local.get $2 + local.get $0 i32.const 1 i32.add i32.const 3 i32.shl i32.add - local.get $5 + local.get $6 f64.store - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|0 end end else + local.get $0 local.get $4 - local.get $8 local.get $1 call $~lib/util/sort/weakHeapSort end end - local.get $2 + local.get $3 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -3539,7 +3564,7 @@ i32.lt_s select end - local.tee $0 + local.tee $2 local.get $3 i32.const 0 i32.lt_s @@ -3547,9 +3572,9 @@ local.get $3 local.get $4 i32.add - local.tee $2 + local.tee $0 i32.const 0 - local.get $2 + local.get $0 i32.const 0 i32.gt_s select @@ -3561,714 +3586,1369 @@ i32.lt_s select end - local.tee $2 + local.tee $0 i32.lt_s if - local.get $0 + local.get $2 local.get $5 i32.add local.get $1 - local.get $2 local.get $0 + local.get $2 i32.sub call $~lib/memory/memory.fill end ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (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 $0 + (local $5 i32) + loop $while-continue|0 local.get $1 - i32.lt_u + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select if - local.get $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 - i32.and - i32.eq + 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 + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u 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.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $3 i32.const 1 i32.add - local.set $1 - local.get $2 - local.get $3 + local.tee $1 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 + local.tee $4 + i32.const 2 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 + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 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/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 24 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - ) - (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=8 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=8 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#__get - local.get $2 local.get $1 - i32.load offset=12 - i32.ge_u - if - i32.const 1360 - i32.const 1760 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $2 + i32.load + local.set $5 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 local.get $1 - i32.load offset=4 + local.tee $4 + i32.const 1 i32.add - i32.load8_s - i32.ne - if - i32.const 0 - return - end + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 - br $for-loop|0 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end end end - i32.const 1 - ) - (func $~lib/typedarray/Int32Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.set $4 - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 local.get $2 - i32.const 0 - i32.lt_s - if (result i32) + i32.const 16 + i32.and + if + local.get $0 local.get $1 - local.get $2 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add local.tee $0 - i32.const 0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 + i32.const 1 + i32.add + local.tee $0 local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - local.get $2 - i32.gt_s - select - end - local.set $0 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 1 i32.add local.tee $1 - i32.const 0 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $3 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - local.get $3 - i32.gt_s - select - end - local.set $1 - loop $for-loop|0 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1360 - i32.const 1760 - i32.const 92 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - ) - (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $5 - local.get $0 - local.tee $3 - i32.load offset=4 - local.tee $6 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - local.get $4 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add local.tee $0 - i32.const 0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.const 0 - i32.gt_s - select - else + i32.const 1 + i32.add + local.tee $0 local.get $1 - local.get $4 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add local.tee $0 - i32.const 0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $0 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $4 - local.get $5 + i32.const 1 i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $5 - local.get $4 + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 local.get $4 - local.get $5 - i32.gt_s - select + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 end - local.get $0 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $0 - local.get $0 local.get $2 - i32.gt_s - select - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + i32.const 8 + i32.and if - i32.const 1360 - i32.const 1632 - i32.const 170 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/typedarray/Uint8Array#reduce (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + 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.get $5 - i32.lt_s + 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 $2 + local.get $0 + local.get $1 local.get $4 - i32.add - i32.load8_u - local.set $6 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 + 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.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + 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 - local.get $3 ) - (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 - i32.const 1 - i32.shr_u i32.ge_u if i32.const 1360 i32.const 1632 - i32.const 440 - i32.const 64 + i32.const 24 + i32.const 45 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl i32.add - local.get $2 - i32.store16 + i32.load8_s ) - (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u + local.get $1 + i32.load offset=12 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 575 - i32.const 64 - call $~lib/builtins/abort - unreachable + i32.const 0 + return end local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 845 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#__get + local.get $2 + local.get $1 + i32.load offset=12 + i32.ge_u + if + i32.const 1360 + i32.const 1760 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $2 + i32.add + i32.load8_s + i32.ne + if + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + i32.const 1 ) - (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u + i32.load offset=12 i32.ge_u if i32.const 1360 - i32.const 1632 - i32.const 980 - i32.const 64 + i32.const 1760 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 i32.load offset=4 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add - local.get $2 - i64.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - local.get $0 - local.get $1 - i64.add + i32.load ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $1 + i32.load offset=12 local.get $0 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - i32.ge_u + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1115 - i32.const 64 - call $~lib/builtins/abort - unreachable + i32.const 0 + return 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/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - local.get $1 - local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.ge_u - if + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__get + local.get $1 + local.get $2 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + ) + (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $3 + local.get $0 + local.tee $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $5 + local.get $3 + local.get $5 + i32.lt_s + select + local.set $3 + local.get $0 + i32.load offset=4 + local.tee $6 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $5 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $5 + local.get $1 + local.get $5 + i32.lt_s + select + end + local.tee $0 + i32.const 2 + i32.shl + i32.add + local.get $6 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $5 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $5 + local.get $2 + local.get $5 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $5 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $5 + local.get $3 + local.get $5 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $1 + local.get $5 + local.get $0 + i32.sub + local.tee $0 + local.get $0 + local.get $1 + i32.gt_s + select + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $4 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 170 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + ) + (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 440 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 575 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 845 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 980 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1115 + i32.const 64 + call $~lib/builtins/abort + unreachable + 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/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if i32.const 1360 i32.const 1632 i32.const 1250 @@ -4646,49 +5326,6 @@ i32.add f64.load ) - (func $~lib/typedarray/Uint8Array#reduceRight (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $5 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $5 - local.get $0 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 @@ -4973,98 +5610,12 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_s - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.eqz ) - (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 @@ -5072,364 +5623,35 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.eqz ) - (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz ) - (func $~lib/typedarray/Uint32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.eqz ) - (func $~lib/typedarray/Uint64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 0 @@ -5440,99 +5662,11 @@ f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - ) (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 0 f64.eq ) - (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end - local.get $2 - ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 @@ -5540,2796 +5674,3309 @@ i32.const 4 i32.eq ) - (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $3 + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end - local.get $2 + i32.const 65535 + i32.and + i32.const 4 + i32.eq ) - (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.set $3 + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end - local.get $2 + i64.const 4 + i64.eq ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 65535 + f32.const 4 + f32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 4 + f64.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 1 i32.and - i32.const 4 - i32.eq + i32.eqz ) - (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.set $3 + i32.const 1 + i32.and + i32.eqz + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 1 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0 + i32.and + i32.eqz + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 1 + i64.and + i64.eqz + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + block $__inlined_func$~lib/math/NativeMathf.mod (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $1 + i32.const -2147483648 + i32.and + local.set $4 + local.get $1 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $2 + i32.const 255 + i32.eq + if + local.get $0 + local.get $0 + f32.add + local.tee $0 + local.get $0 + f32.div + br $__inlined_func$~lib/math/NativeMathf.mod + end + local.get $1 + i32.const 1 + i32.shl + local.tee $3 + i32.const -2147483648 + i32.le_u + if + local.get $0 + local.get $3 + i32.const -2147483648 + i32.ne + f32.convert_i32_u + f32.mul + br $__inlined_func$~lib/math/NativeMathf.mod + end + local.get $2 + if (result i32) + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $1 + i32.const 1 local.get $2 - local.get $4 - i32.lt_s + local.get $1 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $2 + i32.sub + i32.shl + end + local.set $1 + block $folding-inner0 + loop $while-continue|0 + local.get $2 + i32.const 128 + i32.gt_s + if + local.get $1 + i32.const 8388608 + i32.ge_u + if (result i32) + local.get $1 + i32.const 8388608 + i32.eq + br_if $folding-inner0 + local.get $1 + i32.const 8388608 + i32.sub + else + local.get $1 + end + i32.const 1 + i32.shl + local.set $1 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $1 + i32.const 8388608 + i32.ge_u if - local.get $3 + local.get $1 + i32.const 8388608 + i32.eq + br_if $folding-inner0 + local.get $1 + i32.const 8388608 + i32.sub + local.set $1 + end + local.get $1 + local.get $1 + i32.const 8 + i32.shl + i32.clz + local.tee $3 + i32.shl + local.set $1 + local.get $2 + local.get $3 + i32.sub + local.tee $2 + i32.const 0 + i32.gt_s + if (result i32) + local.get $1 + i32.const 8388608 + i32.sub local.get $2 - i32.const 1 + i32.const 23 i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 + i32.or + else local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $2 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $2 + i32.sub + i32.shr_u end + local.get $4 + i32.or + f32.reinterpret_i32 + br $__inlined_func$~lib/math/NativeMathf.mod end - i32.const -1 - local.set $2 + local.get $0 + f32.const 0 + f32.mul end - local.get $2 + f32.const 0 + f32.eq ) - (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0 - local.get $2 + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + block $__inlined_func$~lib/math/NativeMath.mod (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 63 + i64.shr_u + local.set $6 + local.get $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $5 + i64.const 2047 + i64.eq + if + local.get $0 + local.get $0 + f64.add + local.tee $0 + local.get $0 + f64.div + br $__inlined_func$~lib/math/NativeMath.mod + end + local.get $4 + i64.const 1 + i64.shl + local.tee $3 + i64.const -9223372036854775808 + i64.le_u + if + local.get $0 + local.get $3 + i64.const -9223372036854775808 + 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 $4 - i32.lt_s + i64.const 1 + local.get $5 + local.get $4 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $5 + i64.sub + i64.shl + else + local.get $4 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $3 + block $folding-inner0 + loop $while-continue|0 + local.get $5 + i64.const 1024 + i64.gt_s + if + local.get $3 + i64.const 4503599627370496 + i64.ge_u + if (result i64) + local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $folding-inner0 + local.get $3 + i64.const 4503599627370496 + 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.const 4503599627370496 + i64.ge_u if local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i64.const 4503599627370496 + i64.eq + br_if $folding-inner0 + local.get $3 + i64.const 4503599627370496 + i64.sub + local.set $3 + end + local.get $3 + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $3 + i64.shl + local.set $4 + local.get $5 + local.get $3 + i64.sub + local.tee $3 + i64.const 0 + i64.gt_s + if (result i64) + local.get $4 + i64.const 4503599627370496 + i64.sub + local.get $3 + i64.const 52 + i64.shl + i64.or + else + local.get $4 + i64.const 1 + local.get $3 + i64.sub + i64.shr_u end + local.get $6 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + br $__inlined_func$~lib/math/NativeMath.mod end - i32.const -1 - local.set $2 + local.get $0 + f64.const 0 + f64.mul end - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 4 - i32.eq + f64.const 0 + f64.eq ) - (func $~lib/typedarray/Uint32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + (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 12 + 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 - i32.load offset=4 - local.set $3 + i32.const 0 + i32.store offset=8 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|0 + i32.const 7024 + i32.store + local.get $0 + i32.const 7036 + i32.load + local.tee $0 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.gt_s + if local.get $2 + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $1 local.get $4 i32.lt_s if + local.get $1 + local.tee $0 local.get $3 - local.get $2 - i32.const 2 - i32.shl i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.load8_u + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|0 end end i32.const -1 - local.set $2 + local.set $0 end - local.get $2 - ) - (func $~lib/typedarray/Int64Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $0 - i32.load offset=4 - local.set $3 local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0 - local.get $2 + if + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + local.get $1 local.get $4 i32.lt_s if + local.get $1 + local.tee $0 local.get $3 - local.get $2 - i32.const 3 - i32.shl i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|02 end end i32.const -1 - local.set $2 + local.set $0 end - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 4 - i64.eq - ) - (func $~lib/typedarray/Uint64Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $0 - i32.load offset=4 - local.set $3 local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0 - local.get $2 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $1 local.get $4 i32.lt_s if + local.get $1 + local.tee $0 local.get $3 - local.get $2 - i32.const 3 - i32.shl i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.load8_u + i32.const 255 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|05 end end i32.const -1 - local.set $2 + local.set $0 end - local.get $2 - ) - (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.load offset=4 - local.set $3 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0 - local.get $2 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $1 local.get $4 i32.lt_s if + local.get $1 + local.tee $0 local.get $3 - local.get $2 - i32.const 2 - i32.shl i32.add - f32.load + i32.load8_u i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|08 end end i32.const -1 - local.set $2 + local.set $0 end - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 4 - f32.eq - ) - (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - local.get $0 - i32.load offset=4 - local.set $3 local.get $0 - i32.load offset=8 i32.const 3 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0 - local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $1 local.get $4 i32.lt_s if + local.get $1 + local.tee $0 local.get $3 - local.get $2 - i32.const 3 - i32.shl i32.add - f64.load + i32.load8_u i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|011 end end i32.const -1 - local.set $2 + local.set $0 end - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 4 - f64.eq - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 1 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 3 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + local.get $2 i32.load offset=4 local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $for-loop|0 - local.get $2 + loop $while-continue|014 + local.get $1 local.get $4 i32.lt_s if - local.get $2 + local.get $1 + local.tee $0 local.get $3 i32.add - i32.load8_s - local.set $5 + i32.load8_u i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $0 - local.get $1 - 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 $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|014 end end - i32.const 1 + i32.const -1 + local.set $0 end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 1 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 4 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + local.get $2 i32.load offset=4 local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $for-loop|0 - local.get $2 + loop $while-continue|017 + local.get $1 local.get $4 i32.lt_s if - local.get $2 + local.get $1 + local.tee $0 local.get $3 i32.add i32.load8_u - local.set $5 i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 local.get $0 - local.get $1 - 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 $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|017 end end - i32.const 1 + i32.const -1 + local.set $0 end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 1 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + local.get $2 i32.load offset=8 + local.tee $4 + i32.const 10 + i32.le_s i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - 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 $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - end - ) - (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + local.get $2 i32.load offset=4 local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 + loop $while-continue|020 + local.get $1 local.get $4 i32.lt_s if + local.get $1 + local.tee $0 local.get $3 - local.get $2 - i32.const 1 - i32.shl i32.add - i32.load16_u - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 local.get $0 - local.get $1 - 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 $2 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|020 end end - i32.const 1 + i32.const -1 + local.set $0 end - ) - (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $0 + i32.const 0 local.get $0 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $2 i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $3 i32.lt_s if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 local.get $0 local.get $1 - 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 $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $while-continue|023 end end - i32.const 1 + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + local.get $1 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $0 + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $for-loop|0 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|00 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if - local.get $3 + local.get $1 local.get $2 - i32.const 2 - i32.shl i32.add - i32.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.load8_u i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 - drop + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 - br $for-loop|0 + br $while-continue|00 end end - i32.const 1 + i32.const -1 + local.set $2 end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + if + i32.const 0 + i32.const 1568 + i32.const 590 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength local.get $0 - i64.const 1 - i64.and - i64.eqz - ) - (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $0 i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $for-loop|0 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|06 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if - local.get $3 + local.get $1 local.get $2 - i32.const 3 - i32.shl i32.add - i64.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 - drop + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 - br $for-loop|0 + br $while-continue|06 end end - i32.const 1 + i32.const -1 + local.set $2 end - ) - (func $~lib/typedarray/Uint64Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + local.get $2 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 591 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 local.get $0 i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $for-loop|0 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|012 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if - local.get $3 + local.get $1 local.get $2 - i32.const 3 - i32.shl i32.add - i64.load - local.set $5 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 - drop + i32.load8_u + i32.const 255 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 - br $for-loop|0 + br $while-continue|012 end end - i32.const 1 + i32.const -1 + local.set $2 end - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const -2147483648 - i32.and - local.set $4 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $2 - i32.const 255 - i32.eq + local.get $2 + i32.const -1 + i32.ne if - local.get $0 - local.get $0 - f32.add - local.tee $0 - local.get $0 - f32.div - return + i32.const 0 + i32.const 1568 + i32.const 592 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 i32.const 1 - i32.shl - local.tee $3 - i32.const -2147483648 - i32.le_u - if + global.set $~argumentsLength + local.get $0 + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 + local.get $1 local.get $3 - i32.const -2147483648 - i32.ne - f32.convert_i32_u - f32.mul - return - end - local.get $2 - if (result i32) + i32.add + local.get $3 + i32.const 1 + i32.sub local.get $1 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else local.get $1 - i32.const 1 - local.get $2 + local.get $3 + i32.ge_s + select local.get $1 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $2 - i32.sub - i32.shl - end - local.set $1 - block $folding-inner0 - loop $while-continue|0 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|018 local.get $2 - i32.const 128 - i32.gt_s + i32.const 0 + i32.ge_s if local.get $1 - i32.const 8388608 - i32.ge_u - if (result i32) - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - else - local.get $1 - end - i32.const 1 - i32.shl - local.set $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $2 i32.const 1 i32.sub local.set $2 - br $while-continue|0 + br $while-continue|018 end end - local.get $1 - i32.const 8388608 - i32.ge_u - if - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 8 - i32.shl - i32.clz - local.tee $3 - i32.shl - local.set $1 - local.get $2 - local.get $3 - i32.sub - local.tee $2 + i32.const -1 + local.set $2 + end + local.get $2 + i32.const 3 + i32.ne + if i32.const 0 - i32.gt_s - if (result i32) - local.get $1 - i32.const 8388608 - i32.sub - local.get $2 - i32.const 23 - i32.shl - i32.or - else - local.get $1 - i32.const 1 - local.get $2 - i32.sub - i32.shr_u - end - local.get $4 - i32.or - f32.reinterpret_i32 - return + i32.const 1568 + i32.const 593 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - f32.const 0 - f32.mul - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.mod - f32.const 0 - f32.eq - ) - (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $1 + i32.const 0 + i32.ge_s if - local.get $3 + local.get $1 local.get $2 - i32.const 2 - i32.shl i32.add - f32.load - local.set $5 + i32.load8_u i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 local.get $1 - 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 $2 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.sub + local.set $1 + br $while-continue|024 end end - i32.const 1 + i32.const -1 + local.set $1 end - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (result f64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $1 - i64.const 63 - i64.shr_u - local.set $4 local.get $1 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $2 - i64.const 2047 - i64.eq + i32.const 3 + i32.ne if - local.get $0 - local.get $0 - f64.add - local.tee $0 - local.get $0 - f64.div - return + i32.const 0 + i32.const 1568 + i32.const 594 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i64.const 1 - i64.shl - local.tee $3 - i64.const -9223372036854775808 - i64.le_u - if + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 local.get $0 - local.get $3 - i64.const -9223372036854775808 - i64.ne - f64.convert_i32_u - f64.mul - return - end - local.get $2 - i64.eqz - if (result i64) - local.get $1 - i64.const 1 - local.get $2 - local.get $1 - i64.const 12 - i64.shl - i64.clz - i64.sub + i32.load offset=8 local.tee $2 - i64.sub - i64.shl - else - local.get $1 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $1 - block $folding-inner0 - loop $while-continue|0 - local.get $2 - i64.const 1024 - i64.gt_s + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + local.get $2 + i32.const 1 + i32.sub + i32.const 3 + local.get $2 + i32.const 3 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $1 + i32.const 0 + i32.ge_s if local.get $1 - i64.const 4503599627370496 - i64.ge_u - if (result i64) - local.get $1 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $1 - i64.const 4503599627370496 - i64.sub - else - local.get $1 - end - i64.const 1 - i64.shl - local.set $1 local.get $2 - i64.const 1 - i64.sub - local.set $2 - br $while-continue|0 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|027 end end - local.get $1 - i64.const 4503599627370496 - i64.ge_u - if - local.get $1 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $1 - i64.const 4503599627370496 - i64.sub - local.set $1 - end - local.get $1 - local.get $1 - i64.const 11 - i64.shl - i64.clz - local.tee $3 - i64.shl + i32.const -1 local.set $1 - local.get $2 - local.get $3 - i64.sub - local.tee $2 - i64.const 0 - i64.gt_s - if (result i64) - local.get $1 - i64.const 4503599627370496 - i64.sub - local.get $2 - i64.const 52 - i64.shl - i64.or - else - local.get $1 - i64.const 1 - local.get $2 - i64.sub - i64.shr_u - end - local.get $4 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - return end - local.get $0 - f64.const 0 - f64.mul - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.mod - f64.const 0 - f64.eq - ) - (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + local.get $1 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 595 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 local.get $0 i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + local.get $2 + i32.const 2 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $1 + i32.const 0 + i32.ge_s if - local.get $3 + local.get $1 local.get $2 - i32.const 3 - i32.shl i32.add - f64.load - local.set $5 + i32.load8_u i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 local.get $1 - 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 $2 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.sub + local.set $1 + br $while-continue|030 end end - i32.const 1 + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $for-loop|0 + local.get $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 596 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|033 local.get $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|033 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 + local.get $1 i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 597 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 local.get $2 - i32.gt_u - if - local.get $2 - local.get $4 - i32.add - local.tee $3 - i32.load8_s - local.set $5 - local.get $3 - local.get $0 - local.get $4 - i32.add - local.tee $3 - i32.load8_s - i32.store8 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 + i32.const 10 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|036 + end end + i32.const -1 + local.set $1 end local.get $1 - ) - (func $~lib/typedarray/Uint8Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 598 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 local.get $2 - i32.gt_u - if - local.get $2 - local.get $4 - i32.add - local.tee $3 - i32.load8_u - local.set $5 - local.get $3 - local.get $0 - local.get $4 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 + i32.const 11 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|039 + end end + i32.const -1 + local.set $1 end local.get $1 - ) - (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 599 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int8Array#subarray + local.tee $4 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const -1 local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - local.set $5 - local.get $3 - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - i32.store16 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 0 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 + local.get $1 local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|042 + end end + i32.const -1 + local.set $0 end - local.get $1 - ) - (func $~lib/typedarray/Uint16Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - local.set $5 - local.get $3 - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - i32.store16 - local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Uint32Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - i64.store - local.get $3 - local.get $5 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Uint64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - i64.store - local.get $3 - local.get $5 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store - local.get $3 - local.get $5 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - local.get $0 - local.tee $1 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load - local.set $5 - local.get $3 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load - f64.store - local.get $3 - local.get $5 - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - ) - (func $~lib/typedarray/Int8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + i32.const 0 + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $2 - local.get $0 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 + local.get $4 i32.load offset=8 - local.tee $4 - i32.ge_s + local.tee $3 + i32.const 0 + i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 + local.get $4 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $4 + local.set $2 + loop $while-continue|045 + local.get $1 + local.get $3 i32.lt_s if + local.get $1 + local.tee $0 local.get $2 - local.tee $3 - local.get $0 i32.add i32.load8_u - local.get $1 - i32.const 255 - i32.and + i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 + local.get $0 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $while-continue|045 end end i32.const -1 - local.set $3 + local.set $0 end - local.get $3 - ) - (func $~lib/typedarray/Int8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $2 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $2 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 local.get $4 - i32.ge_s - select - local.get $2 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.lt_s + i32.le_s + i32.const 1 + local.get $3 select - local.set $2 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 + local.get $4 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s + local.set $2 + loop $while-continue|048 + local.get $1 + local.get $3 + i32.lt_s if + local.get $1 + local.tee $0 local.get $2 - local.tee $3 - local.get $0 i32.add i32.load8_u - local.get $1 - i32.const 255 - i32.and + i32.const 5 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 + local.get $0 i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + i32.add + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $3 - end - local.get $3 - ) - (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 7024 - i32.store - i32.const 7036 - i32.load - local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 7024 - local.get $1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end + local.set $0 end local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne if i32.const 0 i32.const 1568 - i32.const 580 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 i32.const -1 - i32.ne - if + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 9 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|051 + end + end + i32.const -1 + local.set $0 end local.get $0 i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 582 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 10 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|054 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 584 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|057 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 586 + i32.const 608 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|060 + 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 587 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 2 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|063 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|063 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 590 - i32.const 3 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 7024 + i32.store + local.get $0 + i32.const 7036 + i32.load + local.tee $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 7024 + 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|0 + end + end + i32.const 0 + local.set $1 i32.const -1 - i32.ne + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|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 if i32.const 0 i32.const 1568 - i32.const 591 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 + i32.const 0 + local.set $1 i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02 + 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 592 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 255 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|05 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 593 + i32.const 582 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|08 + end + end + i32.const -1 + local.set $0 + end local.get $0 i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 594 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 2 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|011 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 595 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 596 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $2 + i32.load offset=8 + local.tee $4 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|014 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 597 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 4 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 4 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|017 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 599 + i32.const 586 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int8Array#subarray - local.tee $0 - i32.store offset=8 + i32.const 10 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 10 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|020 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 603 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $0 i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|023 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 605 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $0 + i32.load offset=8 + local.set $1 i32.const -1 - i32.ne + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|00 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|00 + end + end + i32.const -1 + local.set $2 + end + local.get $2 if i32.const 0 i32.const 1568 - i32.const 606 + i32.const 590 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + i32.load offset=8 + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|06 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.get $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 608 + i32.const 591 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf i32.const 1 - i32.ne - if + global.set $~argumentsLength + local.get $0 + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|012 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 255 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|012 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + local.get $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 592 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/typedarray/testArrayIndexOfAndLastIndexOf<~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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 7024 - i32.store - i32.const 7036 - i32.load - local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength local.get $0 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $1 - local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 i32.lt_s - if - local.get $0 - local.get $1 - i32.const 7024 - 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|0 + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|018 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|018 + end end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.get $2 + i32.const 3 + i32.ne if i32.const 0 i32.const 1568 - i32.const 580 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|024 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 + local.get $1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 582 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 583 + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + local.get $2 + i32.const 1 + i32.sub i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 3 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|027 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + local.get $1 i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 584 + i32.const 595 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + local.get $2 + i32.const 2 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|030 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 585 + i32.const 596 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + local.get $2 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|033 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 586 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|036 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 587 + i32.const 598 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|039 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer local.get $0 + i32.const 9 + call $~lib/typedarray/Uint8Array#subarray + local.tee $4 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 590 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|042 + end + end + i32.const -1 + local.set $0 end - i32.const 1 - global.set $~argumentsLength local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 591 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 0 + local.set $1 i32.const -1 - i32.ne - if + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 4 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|045 + end + end + i32.const -1 + local.set $0 end - i32.const 1 - global.set $~argumentsLength local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne if i32.const 0 i32.const 1568 - i32.const 593 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|048 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 595 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 0 + local.set $1 i32.const -1 - i32.ne - if + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 596 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 9 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|051 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 597 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 10 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|054 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 599 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint8Array#subarray - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 i32.const -1 - i32.ne - if + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|057 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 607 + i32.const 608 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 1 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|060 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf i32.const 1 i32.ne if @@ -8340,10 +8987,47 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|063 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|063 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -8363,35 +9047,46 @@ (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 7024 i32.store + local.get $0 i32.const 7036 i32.load local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $2 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $2 local.get $1 i32.const 7024 local.get $1 @@ -8406,10 +9101,46 @@ br $for-loop|0 end end - local.get $0 i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|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 if i32.const 0 i32.const 1568 @@ -8418,10 +9149,47 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -8432,10 +9200,47 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const -1 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 255 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|05 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -8446,10 +9251,47 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|08 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -8460,10 +9302,47 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|011 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -8474,10 +9353,47 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 3 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 3 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|014 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -8488,10 +9404,47 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 4 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|017 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -8502,52 +9455,233 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 i32.const 10 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $2 + i32.load offset=8 + local.tee $4 + i32.const 10 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $3 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|020 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 590 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $2 + i32.load offset=8 + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|023 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $0 + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|00 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|00 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + if + i32.const 0 + i32.const 1568 + i32.const 590 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 global.set $~argumentsLength local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|06 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end + end + i32.const -1 + local.set $2 + end + local.get $2 i32.const -1 i32.ne if @@ -8561,8 +9695,58 @@ i32.const 1 global.set $~argumentsLength local.get $0 + i32.load offset=8 + local.set $1 i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|012 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 255 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|012 + end + end + i32.const -1 + local.set $2 + end + local.get $2 i32.const -1 i32.ne if @@ -8576,8 +9760,58 @@ i32.const 1 global.set $~argumentsLength local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.load offset=8 + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|018 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|018 + end + end + i32.const -1 + local.set $2 + end + local.get $2 i32.const 3 i32.ne if @@ -8588,10 +9822,49 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|024 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 3 i32.ne if @@ -8602,10 +9875,49 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + local.get $2 + i32.const 1 + i32.sub + i32.const 3 + local.get $2 + i32.const 3 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|027 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 3 i32.ne if @@ -8616,10 +9928,49 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + local.get $2 + i32.const 2 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|030 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if @@ -8630,10 +9981,49 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + local.get $2 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|033 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 1 i32.ne if @@ -8644,10 +10034,44 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|036 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 1 i32.ne if @@ -8658,10 +10082,44 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|039 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if @@ -8676,304 +10134,463 @@ local.get $0 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $0 + local.tee $4 i32.store offset=8 - local.get $0 - i32.const 3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + local.get $4 + i32.load offset=8 + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|042 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 605 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 9 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 i32.const -1 - i32.ne + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 0 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 4 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|045 + end + end + i32.const -1 + local.set $0 + end + local.get $0 if i32.const 0 i32.const 1568 - i32.const 606 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 10 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 0 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|048 + 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 607 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 0 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 9 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|051 + 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 608 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 0 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 10 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|054 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 609 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 0 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.tee $0 + local.get $2 + i32.add + i32.load8_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|057 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 608 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 $~lib/typedarray/Int16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + i32.const 1 + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 - local.get $0 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=8 + local.tee $3 i32.const 1 - i32.shr_u - local.tee $4 - i32.ge_s + i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $4 + local.set $2 + loop $while-continue|060 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 local.get $2 - local.tee $3 - i32.const 1 - i32.shl i32.add - i32.load16_u - local.get $1 - i32.const 65535 - i32.and + i32.load8_u + i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $0 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $while-continue|060 end end i32.const -1 - local.set $3 + local.set $0 end - local.get $3 - ) - (func $~lib/typedarray/Int16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + local.get $0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 - local.get $4 - i32.add + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 local.get $4 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.le_s i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $4 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s + local.get $3 select - local.set $2 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + local.get $4 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s + local.set $2 + loop $while-continue|063 + local.get $1 + local.get $3 + i32.lt_s if - local.get $0 + local.get $1 + local.tee $0 local.get $2 - local.tee $3 - i32.const 1 - i32.shl i32.add - i32.load16_u - local.get $1 - i32.const 65535 - i32.and + i32.load8_u + i32.const 5 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + local.get $0 i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + i32.add + local.set $1 + br $while-continue|063 end end i32.const -1 - local.set $3 - end - local.get $3 - ) - (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 + local.set $0 end local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + 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/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 7024 i32.store + local.get $0 i32.const 7036 i32.load local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $2 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $2 local.get $1 i32.const 7024 local.get $1 @@ -8990,696 +10607,1105 @@ br $for-loop|0 end end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|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.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne if i32.const 0 i32.const 1568 - i32.const 582 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 586 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf + i32.const 0 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 65535 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|05 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 582 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 590 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|08 + end + end + i32.const -1 + local.set $0 end - i32.const 1 - global.set $~argumentsLength local.get $0 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 591 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 2 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 2 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|011 + end + end + i32.const -1 + local.set $0 end - i32.const 1 - global.set $~argumentsLength local.get $0 i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 593 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 594 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|014 + end + end + i32.const -1 + local.set $0 end local.get $0 i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 595 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 4 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 4 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|017 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 596 + i32.const 586 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 10 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|020 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 597 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $0 i32.const 0 - i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|023 + end + end + i32.const -1 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 599 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 9 - call $~lib/typedarray/Int16Array#subarray + i32.const 1 + global.set $~argumentsLength + local.get $2 local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|00 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|00 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.get $2 if i32.const 0 i32.const 1568 - i32.const 604 + i32.const 590 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $~argumentsLength local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|06 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.get $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 608 + i32.const 591 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $~argumentsLength local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - 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/typedarray/testArrayIndexOfAndLastIndexOf<~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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 7024 - i32.store - i32.const 7036 - i32.load - local.tee $0 local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 local.get $1 - local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 i32.lt_s - if - local.get $0 - local.get $1 - i32.const 7024 - local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|012 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 65535 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|012 + end end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.get $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 581 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 i32.const -1 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|018 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|018 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.get $2 i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 583 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|024 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 584 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 585 + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 + local.get $2 + i32.const 1 + i32.sub i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 3 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|027 + end + end + i32.const -1 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 586 + i32.const 595 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + local.get $2 + i32.const 2 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|030 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 587 + i32.const 596 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 + local.get $2 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|033 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|036 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.ne if i32.const 0 i32.const 1568 - i32.const 590 + i32.const 598 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 591 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 593 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 595 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 596 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 597 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|039 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf + local.get $1 i32.const -1 i32.ne if @@ -9693,13 +11719,53 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.const 9 - call $~lib/typedarray/Uint16Array#subarray - local.tee $0 + call $~lib/typedarray/Int16Array#subarray + local.tee $4 i32.store offset=8 - local.get $0 - i32.const 3 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|042 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -9710,10 +11776,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 4 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 4 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|045 + end + end + i32.const -1 + local.set $0 + end + local.get $0 if i32.const 0 i32.const 1568 @@ -9722,10 +11828,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|048 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 1 i32.ne if @@ -9736,10 +11882,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 9 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 9 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|051 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -9750,10 +11936,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 10 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 10 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|054 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -9764,10 +11990,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|057 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -9778,10 +12044,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 i32.const 1 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|060 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 1 i32.ne if @@ -9792,207 +12099,117 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - 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 $~lib/typedarray/Int32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 - local.get $0 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 + local.get $4 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - local.tee $4 - i32.ge_s + local.tee $3 + i32.const 2 + i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 + local.get $4 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $4 + local.set $2 + loop $while-continue|063 + local.get $1 + local.get $3 i32.lt_s if - local.get $1 - local.get $0 local.get $2 - local.tee $3 - i32.const 2 + local.get $1 + local.tee $0 + i32.const 1 i32.shl i32.add - i32.load + i32.load16_u + i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 + local.get $0 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $while-continue|063 end end i32.const -1 - local.set $3 + local.set $0 end - local.get $3 - ) - (func $~lib/typedarray/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + local.get $0 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $4 - i32.ge_s - select - local.get $2 + i32.ne + if i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $0 - local.get $2 - local.tee $3 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $3 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - local.set $3 - end - local.get $3 - ) - (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 7024 i32.store + local.get $0 i32.const 7036 i32.load local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $2 local.get $1 i32.const 7024 local.get $1 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set local.get $1 i32.const 1 i32.add @@ -10000,10 +12217,49 @@ br $for-loop|0 end end - local.get $0 - i32.const 0 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|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 if i32.const 0 i32.const 1568 @@ -10012,10 +12268,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -10026,10 +12322,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const -1 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 65535 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|05 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -10040,10 +12376,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|08 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -10054,10 +12430,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 2 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 2 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|011 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -10068,10 +12485,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 3 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|014 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -10082,10 +12540,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 4 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 4 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|017 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -10096,1292 +12595,2231 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 i32.const 10 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|020 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - if + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $0 i32.const 0 - i32.const 1568 - i32.const 590 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|023 + end + end + i32.const -1 + local.set $1 end + local.get $1 i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 591 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $2 + local.tee $0 + i32.load offset=8 i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 593 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 595 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 596 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|00 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|00 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne + local.get $2 if i32.const 0 i32.const 1568 - i32.const 597 + i32.const 590 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $~argumentsLength local.get $0 + i32.load offset=8 i32.const 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 599 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|06 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end + end + i32.const -1 + local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int32Array#subarray - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.get $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 604 + i32.const 591 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $~argumentsLength local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|012 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 65535 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|012 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.get $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 607 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|018 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|018 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 + local.get $2 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 609 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|024 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 594 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 $~lib/typedarray/Uint32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $2 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 local.get $0 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - local.tee $4 - i32.ge_s + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 + local.get $2 i32.const 1 - local.get $4 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + i32.sub + i32.const 3 local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end + i32.const 3 + i32.le_s + select + local.set $1 local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $4 - i32.lt_s + local.set $2 + loop $while-continue|027 + local.get $1 + i32.const 0 + i32.ge_s if - local.get $1 - local.get $0 local.get $2 - local.tee $3 - i32.const 2 + local.get $1 + i32.const 1 i32.shl i32.add - i32.load + i32.load16_u + i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $3 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 + local.get $1 i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + i32.sub + local.set $1 + br $while-continue|027 end end i32.const -1 - local.set $3 + local.set $1 + end + local.get $1 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 595 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 local.get $0 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 local.get $2 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + i32.const 2 local.get $2 - local.get $2 - local.get $4 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s + i32.const 2 + i32.le_s select - local.set $2 + local.set $1 local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + local.set $2 + loop $while-continue|030 + local.get $1 i32.const 0 i32.ge_s if - local.get $1 - local.get $0 local.get $2 - local.tee $3 - i32.const 2 + local.get $1 + i32.const 1 i32.shl i32.add - i32.load + i32.load16_u + i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $3 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 + local.get $1 i32.const 1 i32.sub - local.set $2 - br $while-continue|0 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end + local.get $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 596 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 local.get $0 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 7024 - i32.store - i32.const 7036 - i32.load - local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $1 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 7024 - local.get $1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|033 local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|033 + end end + i32.const -1 + local.set $1 end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + local.get $1 + i32.const 1 + i32.ne if i32.const 0 i32.const 1568 - i32.const 580 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|036 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 581 + i32.const 598 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|039 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 582 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 + i32.const 9 + call $~lib/typedarray/Uint16Array#subarray + local.tee $4 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|042 + 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 583 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 4 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|045 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.ne if i32.const 0 i32.const 1568 - i32.const 584 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|048 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 585 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 9 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|051 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 586 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 10 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|054 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint32Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 587 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|057 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 608 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 1 - global.set $~argumentsLength + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|060 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 1 + i32.ne if i32.const 0 i32.const 1568 - i32.const 590 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 2 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 591 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 2 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|063 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|063 + end + end + i32.const -1 + local.set $0 end - i32.const 1 - global.set $~argumentsLength local.get $0 i32.const -1 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 592 + i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const 3 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 593 - i32.const 3 + 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 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.store offset=8 local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 595 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 7024 + i32.store local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 7036 + i32.load + local.tee $0 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 0 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 596 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|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.const 100 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 - i32.ne if i32.const 0 i32.const 1568 - i32.const 597 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint32Array#lastIndexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 599 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint32Array#subarray - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 3 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const -1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|05 + 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 603 + i32.const 582 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 4 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|08 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 605 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + i32.const 2 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 2 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|011 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 607 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|014 + end + end + i32.const -1 + local.set $0 end local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 609 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 4 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 4 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|017 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 586 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 $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + i32.const 10 + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 local.get $2 - local.get $0 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u local.tee $4 - i32.ge_s + i32.const 10 + i32.le_u i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 + local.get $1 local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|020 + 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 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $0 + i32.const 0 local.get $0 + i32.const 0 + i32.gt_s + select + local.set $1 + local.get $2 i32.load offset=4 local.set $0 - loop $while-continue|0 - local.get $2 - local.get $4 + loop $while-continue|023 + local.get $1 + local.get $3 i32.lt_s if - local.get $1 local.get $0 - local.get $2 - local.tee $3 - i32.const 3 + local.get $1 + i32.const 2 i32.shl i32.add - i64.load - i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $3 + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $while-continue|023 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 - ) - (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + local.get $1 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $0 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $2 - local.get $4 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $1 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 - local.get $4 + local.get $1 + local.get $1 + local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 + local.set $1 + loop $while-continue|00 local.get $2 i32.const 0 i32.ge_s if local.get $1 - local.get $0 local.get $2 - local.tee $3 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load - i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $3 + i32.load + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $2 i32.const 1 i32.sub local.set $2 - br $while-continue|0 + br $while-continue|00 end end i32.const -1 - local.set $3 - end - local.get $3 - ) - (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u local.set $2 end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Int64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 7024 - i32.store - i32.const 7036 - i32.load - local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 7024 - local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf if i32.const 0 i32.const 1568 - i32.const 580 + i32.const 590 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|06 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 11 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + local.get $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 582 + i32.const 591 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|012 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const -1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|012 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 583 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 - i64.const 3 + i32.load offset=8 i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if + i32.shr_u + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|018 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|018 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf + local.get $2 i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 585 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|024 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 586 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Int64Array#indexOf i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 587 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + local.get $2 + i32.const 1 + i32.sub i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 3 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|027 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 + local.get $1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 595 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 590 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 11 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 591 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + local.get $2 + i32.const 2 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|030 + end + end + i32.const -1 + local.set $1 end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const -1 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 593 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 595 + i32.const 596 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 596 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + local.get $2 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|033 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#lastIndexOf + local.get $1 i32.const 1 i32.ne if @@ -11392,10 +14830,48 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|036 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 1 i32.ne if @@ -11406,10 +14882,48 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|039 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if @@ -11422,14 +14936,55 @@ end global.get $~lib/memory/__stack_pointer local.get $0 + i32.const 4 i32.const 9 - call $~lib/typedarray/Int64Array#subarray - local.tee $0 + call $~lib/typedarray/Int32Array#subarray + local.tee $4 i32.store offset=8 - local.get $0 - i64.const 3 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|042 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -11440,10 +14995,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 4 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 4 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|045 + end + end + i32.const -1 + local.set $0 + end + local.get $0 if i32.const 0 i32.const 1568 @@ -11452,10 +15047,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 5 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|048 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 1 i32.ne if @@ -11466,264 +15101,332 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 9 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 9 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|051 + end + end + i32.const -1 + local.set $0 end local.get $0 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 607 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 11 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 10 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|054 + end + end + i32.const -1 + local.set $0 end local.get $0 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 609 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|057 + end + end + i32.const -1 + local.set $0 + end local.get $0 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 608 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 $~lib/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + i32.const 1 + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $2 - local.get $0 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $4 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $4 - i32.ge_s + local.tee $3 i32.const 1 - local.get $4 + i32.le_u + i32.const 1 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $4 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $4 + local.set $2 + loop $while-continue|060 + local.get $1 + local.get $3 i32.lt_s if - local.get $1 - local.get $0 local.get $2 - local.tee $3 - i32.const 3 + local.get $1 + local.tee $0 + i32.const 2 i32.shl i32.add - i64.load - i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $3 + i32.load + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $0 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $while-continue|060 end end i32.const -1 - local.set $3 + local.set $0 end - local.get $3 - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + local.get $0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 + local.get $4 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $2 - local.get $4 - i32.add - local.get $4 + local.tee $3 + i32.const 2 + i32.le_u i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $4 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s + local.get $3 select - local.set $2 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 + local.get $4 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s + local.set $2 + loop $while-continue|063 + local.get $1 + local.get $3 + i32.lt_s if - local.get $1 - local.get $0 local.get $2 - local.tee $3 - i32.const 3 + local.get $1 + local.tee $0 + i32.const 2 i32.shl i32.add - i64.load - i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $3 + i32.load + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 + local.get $0 i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + i32.add + local.set $1 + br $while-continue|063 end end i32.const -1 - local.set $3 + local.set $0 end - local.get $3 - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 i32.const 3 - i32.shr_u - local.set $2 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 7024 i32.store + local.get $0 i32.const 7036 i32.load local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $2 local.get $1 i32.const 7024 local.get $1 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $1 i32.const 1 i32.add @@ -11731,10 +15434,49 @@ br $for-loop|0 end end - local.get $0 - i64.const 0 i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|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 if i32.const 0 i32.const 1568 @@ -11743,10 +15485,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 11 i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|02 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -11757,10 +15539,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const -1 i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const -1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|05 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -11771,10 +15593,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|08 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -11785,10 +15647,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 2 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|011 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -11799,10 +15702,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 i32.const 3 - call $~lib/typedarray/Uint64Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 3 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|014 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -11813,845 +15757,1110 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 i32.const 4 - call $~lib/typedarray/Uint64Array#indexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 4 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|017 + end + end + i32.const -1 + local.set $0 end local.get $0 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Uint64Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 588 + i32.const 586 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 590 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 11 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const 10 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 591 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 10 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|020 + end + end + i32.const -1 + local.set $0 end - i32.const 1 - global.set $~argumentsLength local.get $0 - i64.const -1 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 3 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 593 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 595 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#lastIndexOf i32.const -1 - i32.ne - if + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $0 i32.const 0 - i32.const 1568 - i32.const 596 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 1 - i32.ne - if + local.get $0 i32.const 0 - i32.const 1568 - i32.const 597 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + local.set $1 + local.get $2 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|023 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Uint64Array#lastIndexOf + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 599 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint64Array#subarray + i32.const 1 + global.set $~argumentsLength + local.get $2 local.tee $0 - i32.store offset=8 - local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|00 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|00 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.get $2 if i32.const 0 i32.const 1568 - i32.const 604 + i32.const 590 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $~argumentsLength local.get $0 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 i32.const -1 - i32.ne - if + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + local.get $1 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s + select + local.get $1 i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $1 + loop $while-continue|06 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 11 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.get $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 608 + i32.const 591 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 5 i32.const 1 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $~argumentsLength local.get $0 - i64.const 5 + i32.load offset=8 i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - 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 $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + i32.shr_u + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - i32.ge_s + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 + local.get $1 + local.get $3 + i32.add + local.get $3 i32.const 1 - local.get $4 + i32.sub + local.get $1 + local.get $1 + local.get $3 + i32.ge_s select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end + select + local.set $2 local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 + local.set $1 + loop $while-continue|012 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if local.get $1 - local.get $0 local.get $2 - local.tee $3 i32.const 2 i32.shl i32.add - f32.load - f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $3 + i32.load + i32.const -1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 + local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 - br $while-continue|0 + br $while-continue|012 end end i32.const -1 - local.set $3 + local.set $2 end - local.get $3 - ) - (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + local.get $2 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 592 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + i32.const -1 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 - local.get $4 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + local.get $1 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $2 - local.get $2 - local.get $4 + local.get $1 + local.get $1 + local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $2 local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 + local.set $1 + loop $while-continue|018 local.get $2 i32.const 0 i32.ge_s if local.get $1 - local.get $0 local.get $2 - local.tee $3 i32.const 2 i32.shl i32.add - f32.load - f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $3 + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + local.get $2 i32.const 1 i32.sub local.set $2 - br $while-continue|0 + br $while-continue|018 end end i32.const -1 - local.set $3 + local.set $2 end - local.get $3 - ) - (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end + local.get $2 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 593 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 7024 - i32.store - i32.const 7036 - i32.load - local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $1 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 7024 - local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|024 local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|024 + end end + i32.const -1 + local.set $1 end - local.get $0 - f32.const 0 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 + local.get $1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 581 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const -1 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 582 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + local.get $2 + i32.const 1 + i32.sub i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 583 + local.get $2 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|027 + end + end + i32.const -1 + local.set $1 end - local.get $0 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf + local.get $1 i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 584 + i32.const 595 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + local.get $2 + i32.const 2 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|030 + end + end + i32.const -1 + local.set $1 end - local.get $0 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#indexOf + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 586 + i32.const 596 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 1 - i32.const 10 - call $~lib/typedarray/Float32Array#indexOf i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + local.get $2 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|033 + end + end + i32.const -1 + local.set $1 end - local.get $0 - f32.const 1 - i32.const -100 - call $~lib/typedarray/Float32Array#indexOf + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 590 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|036 + end + end + i32.const -1 + local.set $1 end + local.get $1 i32.const 1 - global.set $~argumentsLength - local.get $0 - f32.const 11 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 591 + i32.const 598 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f32.const -1 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|039 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 592 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 593 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 9 + call $~lib/typedarray/Uint32Array#subarray + local.tee $4 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|042 + end + end + i32.const -1 + local.set $0 end local.get $0 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 594 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 4 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|045 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.ne if i32.const 0 i32.const 1568 - i32.const 595 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 0 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 596 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|048 + end + end + i32.const -1 + local.set $0 end local.get $0 - f32.const 1 - i32.const 100 - call $~lib/typedarray/Float32Array#lastIndexOf i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 597 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 1 - i32.const -10 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - i32.const -11 - call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 0 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 599 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 9 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|051 + end + end + i32.const -1 + local.set $0 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 9 - call $~lib/typedarray/Float32Array#subarray - local.tee $0 - i32.store offset=8 local.get $0 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 4 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 604 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 5 i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 10 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|054 + end + end + i32.const -1 + local.set $0 end local.get $0 - f32.const 9 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 606 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 10 i32.const 0 - call $~lib/typedarray/Float32Array#indexOf + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 11 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|057 + end + end + i32.const -1 + local.set $0 end local.get $0 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf i32.const -1 i32.ne if @@ -12662,10 +16871,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 5 i32.const 1 - call $~lib/typedarray/Float32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const 1 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|060 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 1 i32.ne if @@ -12676,10 +16926,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 5 i32.const 2 - call $~lib/typedarray/Float32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const 2 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|063 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|063 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const -1 i32.ne if @@ -12695,212 +16986,158 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 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 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 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 7024 + i32.store + local.get $1 + i32.const 7036 + i32.load + local.tee $1 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 7024 + 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 + i32.const 0 + local.set $0 i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 - local.get $0 i32.load offset=8 i32.const 3 i32.shr_u local.tee $4 - i32.ge_s + i32.eqz i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 i32.load offset=4 - local.set $0 + local.set $3 loop $while-continue|0 - local.get $2 + local.get $0 local.get $4 i32.lt_s if - local.get $1 + local.get $3 local.get $0 - local.get $2 - local.tee $3 + local.tee $1 i32.const 3 i32.shl i32.add - f64.load - f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $3 + i64.load + i64.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $3 + local.set $1 end - local.get $3 - ) - (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $4 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 - local.get $4 - i32.add - local.get $4 i32.const 1 - i32.sub - local.get $2 - local.get $2 local.get $4 - i32.ge_s select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s + local.set $3 + loop $while-continue|02 + local.get $0 + local.get $4 + i32.lt_s if - local.get $1 + local.get $3 local.get $0 - local.get $2 - local.tee $3 + local.tee $1 i32.const 3 i32.shl i32.add - f64.load - f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $3 + i64.load + i64.const 11 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 + local.get $1 i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + i32.add + local.set $0 + br $while-continue|02 end end i32.const -1 - local.set $3 - end - local.get $3 - ) - (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $2 + local.set $1 end - local.get $0 local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 7024 - i32.store - i32.const 7036 - i32.load - local.tee $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 7024 - local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - f64.const 0 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf i32.const -1 i32.ne if @@ -12911,39 +17148,160 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f64.const -1 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 583 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + local.get $2 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const -1 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|05 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|08 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 2 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|011 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 i32.ne if i32.const 0 @@ -12953,10 +17311,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 3 i32.const 3 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 3 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|014 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 3 i32.ne if @@ -12967,10 +17366,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 3 i32.const 4 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 4 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|017 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if @@ -12981,10 +17421,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 1 i32.const 10 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 10 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|020 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if @@ -12995,10 +17476,58 @@ call $~lib/builtins/abort unreachable end + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $0 + local.get $2 + i32.load offset=4 + local.set $1 + loop $while-continue|023 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|023 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f64.const 1 - i32.const -100 - call $~lib/typedarray/Float64Array#indexOf i32.const 1 i32.ne if @@ -13011,9 +17540,66 @@ end i32.const 1 global.set $~argumentsLength + local.get $2 + local.tee $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|00 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|00 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f64.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -13024,9 +17610,66 @@ end i32.const 1 global.set $~argumentsLength + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|06 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 11 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f64.const 11 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -13039,9 +17682,66 @@ end i32.const 1 global.set $~argumentsLength + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|012 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const -1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|012 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f64.const -1 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -13054,37 +17754,180 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - f64.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs + local.get $1 + i32.load offset=8 i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 593 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 + local.get $1 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|018 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|018 + end + end + i32.const -1 + local.set $0 end local.get $0 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#lastIndexOf i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 594 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 3 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|024 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 594 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + local.get $2 + i32.const 1 + i32.sub + i32.const 3 + local.get $2 + i32.const 3 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|027 + end + end + i32.const -1 + local.set $0 + end + local.get $0 i32.const 3 i32.ne if @@ -13095,10 +17938,53 @@ call $~lib/builtins/abort unreachable end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + local.get $2 + i32.const 2 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|030 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#lastIndexOf i32.const -1 i32.ne if @@ -13109,10 +17995,53 @@ call $~lib/builtins/abort unreachable end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + local.get $2 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|033 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f64.const 1 - i32.const 100 - call $~lib/typedarray/Float64Array#lastIndexOf i32.const 1 i32.ne if @@ -13123,10 +18052,48 @@ call $~lib/builtins/abort unreachable end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|036 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f64.const 1 - i32.const -10 - call $~lib/typedarray/Float64Array#lastIndexOf i32.const 1 i32.ne if @@ -13137,10 +18104,48 @@ call $~lib/builtins/abort unreachable end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|039 + end + end + i32.const -1 + local.set $0 + end local.get $0 - f64.const 1 - i32.const -11 - call $~lib/typedarray/Float64Array#lastIndexOf i32.const -1 i32.ne if @@ -13152,16 +18157,55 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 4 + local.get $1 i32.const 9 - call $~lib/typedarray/Float64Array#subarray - local.tee $0 + call $~lib/typedarray/Int64Array#subarray + local.tee $4 i32.store offset=8 - local.get $0 - f64.const 3 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|042 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if @@ -13172,10 +18216,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 4 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 4 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|045 + end + end + i32.const -1 + local.set $1 + end + local.get $1 if i32.const 0 i32.const 1568 @@ -13184,10 +18268,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 5 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 5 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|048 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const 1 i32.ne if @@ -13198,10 +18322,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 9 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 9 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|051 + end + end + i32.const -1 + local.set $1 + end + local.get $1 i32.const -1 i32.ne if @@ -13212,7160 +18376,5064 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 10 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 + local.get $4 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 10 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|054 + end + end + i32.const -1 + local.set $1 end - local.get $0 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 608 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 5 - i32.const 1 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 + local.get $4 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 11 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|057 + end + end + i32.const -1 + local.set $1 end - local.get $0 - f64.const 5 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 608 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 $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 i32.const 1 - i32.sub - local.tee $2 + i32.le_u i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 5 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|060 + end + end + i32.const -1 + local.set $1 end - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.lt_s - local.tee $2 + i32.const 1 + i32.ne if - local.get $0 - i32.const 45 - i32.store16 i32.const 0 - local.get $1 - i32.sub + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.const 2 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|063 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 5 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|063 + end + end + i32.const -1 local.set $1 end local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.lt_u + i32.const -1 + i32.ne if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - local.get $1 - i32.eq + 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 if + i32.const 32336 + i32.const 32384 i32.const 1 - return + 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.eqz - i32.const 1 - local.get $0 - select - 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 + i32.const 0 + i32.store offset=8 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) + i32.const 7024 + i32.store + local.get $1 + i32.const 7036 + i32.load + local.tee $1 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store offset=4 + loop $for-loop|0 local.get $0 - local.tee $3 - i32.const 7 - i32.and local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 7024 + 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|0 + end + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 select - if - loop $do-continue|0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_s + if local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add i64.load + i64.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 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 - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 end end - loop $while-continue|1 + i32.const -1 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.01 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 + local.get $4 + i32.lt_s if local.get $3 - i32.load16_u - local.tee $2 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 - i32.const 2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl i32.add - local.set $3 + i64.load + i64.const 11 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.01 local.get $1 - i32.const 2 + i32.const 1 i32.add - local.set $1 - br $while-continue|1 + local.set $0 + br $while-continue|02 end end - i32.const 0 + i32.const -1 + local.set $1 end - i32.eqz - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u + i32.const -1 + i32.ne if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 255 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const -1 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|05 + end + end + i32.const -1 local.set $1 end local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.lt_u + i32.const -1 + i32.ne if - local.get $0 + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 48 - i32.or - i32.store16 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 local.get $2 - i32.const 1 - i32.add - return - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 - i32.add - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - call $~lib/util/string/joinIntegerArray - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + i32.load offset=4 + local.set $3 + loop $while-continue|08 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|08 + end + end + i32.const -1 + local.set $1 + end local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u + i32.const 3 + i32.ne if - local.get $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 65535 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 + i32.const 2 + local.set $0 + i32.const -1 local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - call $~lib/util/string/joinIntegerArray - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 2 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|011 + end + end + i32.const -1 + local.set $1 + end local.get $1 - i32.const 0 - i32.lt_s - local.tee $2 + i32.const 3 + i32.ne if - local.get $0 - i32.const 45 - i32.store16 i32.const 0 - local.get $1 - i32.sub + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 3 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|014 + end + end + i32.const -1 local.set $1 end local.get $1 - i32.const 10 - i32.lt_u + i32.const 3 + i32.ne if - local.get $0 + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 4 + i32.le_u i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.or - i32.store16 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 local.get $2 - i32.const 1 - i32.add - return + i32.load offset=4 + local.set $3 + loop $while-continue|017 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|017 + end + end + i32.const -1 + local.set $1 end - local.get $0 - local.get $1 local.get $1 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 - ) - (func $~lib/typedarray/Int32Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinIntegerArray - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 10 - i32.lt_u + i32.const -1 + i32.ne if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 - ) - (func $~lib/typedarray/Uint32Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinIntegerArray - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (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 - 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 - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - 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 - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - loop $do-continue|0 - local.get $0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 10 + i32.le_u i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 - local.get $1 - i64.const 10 - i64.div_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (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 0 - i64.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i64.const 0 - local.get $1 - i64.sub + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|020 + end + end + i32.const -1 local.set $1 end local.get $1 - i64.const 10 - i64.lt_u + i32.const -1 + i32.ne if - local.get $0 + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.const -100 + i32.le_s i32.const 1 - i32.shl - i32.add + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $1 + i32.const 0 local.get $1 - i64.const 48 - i64.or - i64.store16 + i32.const 0 + i32.gt_s + select + local.set $0 local.get $2 - i32.const 1 - i32.add - return + i32.load offset=4 + local.set $1 + loop $while-continue|023 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|023 + end + end + i32.const -1 + local.set $0 end - local.get $1 - i64.const 4294967295 - i64.le_u + local.get $0 + i32.const 1 + i32.ne if + i32.const 0 + i32.const 1568 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $1 - i32.wrap_i64 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $3 - call $~lib/util/number/decimalCount32 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 + local.get $3 i32.add - local.set $2 - local.get $0 local.get $3 + i32.const 1 + i32.sub local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High local.get $2 - i32.add - local.tee $2 - call $~lib/util/number/utoa_dec_simple + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|00 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|00 + end + end + i32.const -1 + local.set $0 end - local.get $2 - ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 local.get $0 + if + i32.const 0 + i32.const 1568 + i32.const 590 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - call $~lib/util/string/joinIntegerArray - ) - (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.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 local.get $1 - i32.wrap_i64 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $2 - local.get $0 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 + local.get $2 + local.get $3 + i32.add local.get $3 + i32.const 1 + i32.sub local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - local.get $1 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 local.get $1 - call $~lib/util/number/decimalCount64High - local.tee $2 - call $~lib/util/number/utoa_dec_simple + i32.load offset=4 + local.set $3 + loop $while-continue|06 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 11 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end + end + i32.const -1 + local.set $0 end - local.get $2 - ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 591 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - call $~lib/util/string/joinIntegerArray - ) - (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 i64) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - local.get $3 - local.get $1 - i64.sub - local.set $8 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $11 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $11 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $9 - loop $while-continue|0 - local.get $9 + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $9 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $5 - local.get $7 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|012 local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - i64.ge_u + i32.const 0 + i32.ge_s if - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 2 + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 i32.shl - i32.const 8576 i32.add - i64.load32_u - local.get $11 - i64.extend_i32_s - i64.shl - local.set $10 + i64.load + i64.const -1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 local.get $0 - local.get $6 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $10 - local.get $5 - local.get $1 - i64.sub - i64.le_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return + br $while-continue|012 end - br $while-continue|0 end + i32.const -1 + local.set $0 end - local.get $11 - i64.extend_i32_s - local.set $13 - loop $while-continue|4 (result i32) - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 592 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $3 - local.get $13 - i64.shr_u - local.tee $1 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 + local.get $2 local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $8 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 8576 i32.add - i64.load32_u - i64.mul - local.set $8 - local.get $0 - local.get $6 + local.get $3 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $10 - local.get $5 - local.get $1 - i64.sub - i64.le_u + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|018 + local.get $2 i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select + i32.ge_s if + local.get $3 local.get $2 + local.tee $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 + local.get $0 i32.const 1 i32.sub local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|6 + br $while-continue|018 end end - local.get $0 - local.get $2 - i32.store16 - local.get $6 + i32.const -1 + local.set $0 end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz + local.get $0 + i32.const 3 + i32.ne if - local.get $0 + i32.const 0 + i32.const 1568 + i32.const 593 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + local.get $2 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $0 local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $0 + i32.const 0 + i32.ge_s if + local.get $2 local.get $0 - local.get $1 - i32.const 1 + i32.const 3 i32.shl i32.add - i32.const 48 - i32.store16 - local.get $1 + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + local.get $0 i32.const 1 + i32.sub + local.set $0 + br $while-continue|024 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 594 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + local.get $2 + i32.const 1 + i32.sub + i32.const 3 + local.get $2 + i32.const 3 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl i32.add - local.set $1 - br $for-loop|0 + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|027 end end - local.get $0 - local.get $3 + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 595 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + local.get $2 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 + i32.sub + i32.const 2 + local.get $2 i32.const 2 - i32.add - else - local.get $3 - i32.const 21 i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|030 local.get $0 i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|030 + 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 596 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + local.get $2 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|033 local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s i32.const 0 - local.get $3 - i32.const -6 - i32.gt_s - select - if (result i32) + i32.ge_s + if + local.get $2 local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 + i32.const 3 i32.shl i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 local.get $0 - local.get $1 i32.const 1 - i32.shl - call $~lib/memory/memory.copy + i32.sub + local.set $0 + br $while-continue|033 + 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 597 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 + i32.const 3 + i32.shl i32.add - else - local.get $1 + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 + local.get $0 i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end + i32.sub + local.set $0 + br $while-continue|036 end end + i32.const -1 + local.set $0 end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 + local.get $0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 598 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 local.get $1 - f64.neg - else + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $0 local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|039 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|039 + end + end + i32.const -1 + local.set $0 end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 0 + local.get $0 + i32.const -1 i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub - local.get $4 - i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $4 - local.get $1 - local.get $4 - f64.convert_i32_s - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 7704 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 8400 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $9 - call $~lib/util/number/genDigits - local.get $9 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 - i32.add - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 + i32.const 0 + i32.const 1568 + i32.const 599 i32.const 3 - return + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 + i32.const 9 + call $~lib/typedarray/Uint64Array#subarray + local.tee $4 + i32.store offset=8 + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - return - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 + local.get $3 + i32.lt_s if + local.get $2 local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 + local.get $1 + i32.const 1 i32.add local.set $0 + br $while-continue|042 end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.add - return end - unreachable + i32.const -1 + local.set $1 end - local.get $0 local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinFloatArray - ) - (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - call $~lib/util/string/joinFloatArray - ) - (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 4 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|045 end - i32.const 0 - local.set $1 end i32.const -1 - local.set $2 + local.set $1 end - local.get $0 local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array.wrap - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 8860 - i32.load - local.get $0 - i32.load offset=8 - i32.gt_s if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 + i32.const 0 local.set $0 - i32.const 8852 - i32.load - local.set $2 - i32.const 8860 - i32.load - local.set $3 - loop $for-loop|0 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 local.get $3 - i32.lt_s - if + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 local.get $0 - local.get $1 - i32.add - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 5 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|048 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=8 local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - i32.lt_s + i32.const 1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add + i32.const 0 local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.gt_s - if + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 local.get $0 - local.get $2 - i32.add local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 9 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|051 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - local.get $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - i32.lt_s + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add + i32.const 0 local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.gt_s - if + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 local.get $0 - local.get $2 - i32.add local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 10 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|054 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - local.get $0 - i32.load offset=8 - i32.const 9116 - i32.load - i32.const 7 - i32.add - i32.lt_s + local.get $1 + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 7 - i32.add - i32.const 9108 - i32.load - i32.const 9112 - i32.load - call $~lib/memory/memory.copy - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - local.get $2 i32.const 0 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1864 - i32.const 19 - call $~lib/builtins/abort - unreachable + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 11 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|057 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i32.load offset=8 - local.get $2 local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.add - i32.lt_s + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - i32.load offset=4 - i32.add + i32.const 1 local.set $0 - local.get $1 - i32.load offset=4 - local.set $2 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.const 1 + i32.le_u + i32.const 1 local.get $3 - i32.gt_s - if + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 local.get $0 local.get $3 - i32.add - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.tee $4 - i32.wrap_i64 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i64.extend_i32_s - local.get $4 - i32.const 255 - local.get $4 - i32.wrap_i64 - i32.sub - i32.const 31 - i32.shr_s - i64.extend_i32_s - i64.or - i64.and - i64.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 5 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|060 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1864 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - local.get $2 local.get $1 - i32.load offset=8 i32.const 1 - i32.shr_u - i32.add - i32.lt_s + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - local.set $2 - local.get $1 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + i32.const 2 + local.set $0 + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.const 2 + i32.le_u + i32.const 1 local.get $3 - i32.gt_s - if - local.get $2 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.tee $0 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $0 - i32.const 255 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|063 local.get $0 - 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|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + i64.load + i64.const 5 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|063 + end end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + 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 $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 8860 - i32.load - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + (local $4 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 15924 + i32.lt_s if - 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 end - local.get $0 - i32.load offset=4 - local.set $0 - i32.const 8852 - i32.load - local.set $2 - i32.const 8860 + 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 7024 + i32.store + local.get $1 + i32.const 7036 i32.load - local.set $3 + local.tee $1 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 i32.lt_s if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 - local.get $1 + local.get $0 + i32.const 7024 + 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 $1 + local.set $0 br $for-loop|0 end end - ) - (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add + i32.const 0 local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $2 - i32.gt_s - if + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 0 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) local.get $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 + i32.const 0 local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 local.get $2 - i32.gt_s - if + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $3 - i32.add - i32.load8_u - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 11 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|02 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.get $1 - i32.load offset=4 + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const -1 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|05 + end + end + i32.const -1 + local.set $1 + end local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 9116 - i32.load - i32.const 7 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 14 - i32.add + i32.const 0 local.set $0 - i32.const 9108 - i32.load - local.set $2 - i32.const 9116 - i32.load - local.set $3 - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_s - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|08 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - i32.const 8860 - i32.load - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.const 3 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 8852 - i32.load - i32.const 8856 - i32.load - call $~lib/memory/memory.copy - ) - (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 2 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|011 + end + end + i32.const -1 + local.set $1 + end local.get $1 - i32.load offset=8 i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 i32.const 3 - i32.shr_u + local.set $0 + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 local.get $2 - i32.gt_s - if + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 3 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|014 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) local.get $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.const 3 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 + i32.const 4 local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 local.get $2 - i32.gt_s - if + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 4 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $2 - local.get $3 - i32.add - i32.load8_u - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|017 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add + i32.const 10 local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + i32.const -1 local.set $1 - loop $for-loop|0 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 local.get $2 - i32.gt_s - if + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 10 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 1 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|020 + end end + i32.const -1 + local.set $1 end - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 9116 - i32.load - i32.const 7 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + local.get $1 + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 28 - i32.add + i32.const -1 local.set $0 - i32.const 9108 - i32.load - local.set $2 - i32.const 9116 - i32.load - local.set $3 - loop $for-loop|0 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 local.get $3 - i32.lt_s - if + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $0 + local.get $2 + i32.load offset=4 + local.set $1 + loop $while-continue|023 local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_s - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 1 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|023 + end end + i32.const -1 + local.set $0 end - ) - (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 8860 - i32.load local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s + i32.const 1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 588 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - local.set $0 - i32.const 8852 - i32.load + i32.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $1 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $2 - i32.const 8860 - i32.load - local.set $3 - loop $for-loop|0 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|00 local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 0 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|00 + end end + i32.const -1 + local.set $0 end - ) - (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 590 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 48 - i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + i32.const 1 + global.set $~argumentsLength local.get $1 i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - i32.gt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 + local.set $2 + i32.const -1 local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - local.set $1 - loop $for-loop|0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 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 $3 - i32.add - i64.load8_u - i64.store + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|06 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 11 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 + end end + i32.const -1 + local.set $0 end - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 591 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 32 - i32.add - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 + i32.const 1 + global.set $~argumentsLength local.get $1 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0 + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 local.get $2 - i32.gt_s - if - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|012 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const -1 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|012 + end end + i32.const -1 + local.set $0 end - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 9116 - i32.load - i32.const 7 - i32.add local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 592 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 56 - i32.add - local.set $0 - i32.const 9108 - i32.load + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $2 - i32.const 9116 - i32.load - local.set $3 - loop $for-loop|0 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $1 + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|018 local.get $2 - i32.add - i64.load8_s - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - ) - (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/util/sort/weakHeapSort (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.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 + i32.const 0 + i32.ge_s + if local.get $3 - i32.const 6 - i32.shr_u + local.get $2 + local.tee $0 i32.const 2 i32.shl i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 + local.get $0 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.sub + local.set $2 + br $while-continue|018 end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 593 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|024 local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.add - i32.load8_s - local.set $3 - local.get $0 - local.get $4 - i32.add - i32.load8_s - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u + local.get $2 + local.get $0 i32.const 2 i32.shl i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.add - local.get $3 - i32.store8 + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 local.get $0 - local.get $7 - i32.add - local.get $6 - i32.store8 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|024 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end + i32.const -1 + local.set $0 end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 594 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + local.get $1 + i32.load offset=8 i32.const 2 - i32.ge_s - if - local.get $0 - i32.load8_s - local.set $1 - local.get $0 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + local.get $2 + i32.const 1 + i32.sub + i32.const 3 + local.get $2 + i32.const 3 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|027 local.get $0 - local.get $4 - i32.add - local.tee $3 - i32.load8_s - i32.store8 - local.get $3 - local.get $1 - i32.store8 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 i32.const 2 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + local.get $0 i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load8_s - local.set $3 - local.get $0 - local.get $1 - i32.add - i32.load8_s - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.add - local.get $3 - i32.store8 - local.get $0 - local.get $6 - i32.store8 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + i32.sub + local.set $0 + br $while-continue|027 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $0 end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_s offset=1 - local.set $1 local.get $0 - local.get $0 - i32.load8_s - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 - ) - (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - local.tee $3 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 595 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + local.get $1 i32.load offset=8 - local.tee $0 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + local.get $2 i32.const 1 + i32.sub + i32.const 2 + local.get $2 + i32.const 2 i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $3 + select + local.set $0 + local.get $1 i32.load offset=4 - local.set $5 - local.get $0 - i32.const 2 - i32.eq - if - local.get $5 - i32.load8_s offset=1 - local.set $0 - local.get $5 - i32.load8_s - local.set $2 - i32.const 2 - global.set $~argumentsLength + local.set $2 + loop $while-continue|030 local.get $0 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s if - local.get $5 local.get $2 - i32.store8 offset=1 - local.get $5 local.get $0 - i32.store8 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|030 end - br $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $0 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $5 - local.get $6 - i32.add - i32.load8_s - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $5 - i32.add - i32.load8_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $5 - local.get $1 - i32.const 1 - i32.add - i32.add - local.get $8 - i32.store8 - br $while-continue|1 - end - end - end - local.get $5 - local.get $0 - i32.const 1 - i32.add - i32.add - local.get $7 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $5 - local.get $0 - local.get $1 - call $~lib/util/sort/weakHeapSort end + i32.const -1 + local.set $0 end - local.get $3 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $0 - i32.gt_s local.get $0 - local.get $1 - i32.gt_s - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (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.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 + i32.const -1 + i32.ne + if i32.const 0 - i32.gt_s - if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u + i32.const 1568 + i32.const 596 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + local.get $2 + i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 i32.const 2 i32.shl i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u + f32.load + f32.const 1 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + local.get $0 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.sub + local.set $0 + br $while-continue|033 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 597 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|036 local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.add - i32.load8_u - local.set $3 - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u + local.get $2 + local.get $0 i32.const 2 i32.shl i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.add - local.get $3 - i32.store8 + f32.load + f32.const 1 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $0 - local.get $7 - i32.add - local.get $6 - i32.store8 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|036 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end + i32.const -1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 598 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 + local.get $1 + i32.load offset=8 i32.const 2 - i32.ge_s - if - local.get $0 - i32.load8_u - local.set $1 - local.get $0 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|039 local.get $0 - local.get $4 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - local.get $1 - i32.store8 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 i32.const 2 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 + f32.load + f32.const 1 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 + local.get $0 i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load8_u - local.set $3 - local.get $0 - local.get $1 - i32.add - i32.load8_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.add - local.get $3 - i32.store8 - local.get $0 - local.get $6 - i32.store8 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + i32.sub + local.set $0 + br $while-continue|039 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $0 end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $1 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 599 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.store8 - ) - (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - local.tee $3 + i32.const 9 + call $~lib/typedarray/Float32Array#subarray + local.tee $4 + i32.store offset=8 + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 + local.get $4 i32.load offset=8 - local.tee $0 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz i32.const 1 - i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 + local.get $4 i32.load offset=4 - local.set $5 - local.get $0 - i32.const 2 - i32.eq - if - local.get $5 - i32.load8_u offset=1 - local.set $0 - local.get $5 - i32.load8_u - local.set $2 - i32.const 2 - global.set $~argumentsLength + local.set $2 + loop $while-continue|042 local.get $0 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 + local.get $3 i32.lt_s if - local.get $5 local.get $2 - i32.store8 offset=1 - local.get $5 local.get $0 - i32.store8 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|042 end - br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $0 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $5 - local.get $6 - i32.add - i32.load8_u - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $5 - i32.add - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $5 - local.get $1 - i32.const 1 - i32.add - i32.add - local.get $8 - i32.store8 - br $while-continue|1 - end - end - end - local.get $5 - local.get $0 - i32.const 1 - i32.add - i32.add - local.get $7 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $5 - local.get $0 - local.get $1 - call $~lib/util/sort/weakHeapSort end + i32.const -1 + local.set $1 end - local.get $3 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - local.tee $0 - local.get $1 - i32.const 255 - i32.and - local.tee $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 255 - i32.and - local.tee $1 - local.get $0 - i32.const 255 - i32.and - local.tee $0 - i32.gt_u - local.get $0 - local.get $1 - i32.gt_u - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (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.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $5 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 local.get $4 - i32.const 0 - i32.gt_s - if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u + f32.load + f32.const 4 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 + local.get $1 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.add + local.set $0 + br $while-continue|045 end + end + i32.const -1 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 local.get $0 local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $3 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + local.get $2 local.get $0 - local.get $4 - i32.const 1 + local.tee $1 + i32.const 2 i32.shl i32.add - local.get $3 - i32.store16 - local.get $0 - local.get $7 + f32.load + f32.const 5 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + local.get $1 i32.const 1 - i32.shl i32.add - local.get $6 - i32.store16 + local.set $0 + br $while-continue|048 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end + i32.const -1 + local.set $1 end local.get $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 local.get $4 + i32.load offset=8 i32.const 2 - i32.ge_s - if - local.get $0 - i32.load16_s - local.set $1 - local.get $0 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - i32.store16 local.get $3 - local.get $1 - i32.store16 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + f32.load + f32.const 9 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 local.get $1 i32.const 1 - i32.shl i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load16_s - local.set $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.store16 - local.get $0 - local.get $6 - i32.store16 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + local.set $0 + br $while-continue|051 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $1 end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load16_s offset=2 - local.set $1 - local.get $0 - local.get $0 - i32.load16_s - i32.store16 offset=2 - local.get $0 local.get $1 - i32.store16 - ) - (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - local.tee $3 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 + local.get $4 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u - local.tee $0 + local.tee $3 + i32.eqz i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 + local.get $4 i32.load offset=4 - local.set $5 - local.get $0 - i32.const 2 - i32.eq - if - local.get $5 - i32.load16_s offset=2 - local.set $0 - local.get $5 - i32.load16_s - local.set $2 - i32.const 2 - global.set $~argumentsLength + local.set $2 + loop $while-continue|054 local.get $0 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 + local.get $3 i32.lt_s if - local.get $5 local.get $2 - i32.store16 offset=2 - local.get $5 local.get $0 - i32.store16 + local.tee $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const 10 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|054 end - br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $0 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $5 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $5 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $5 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.store16 - br $while-continue|1 - end - end - end - local.get $5 - local.get $0 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $5 - local.get $0 - local.get $1 - call $~lib/util/sort/weakHeapSort end + i32.const -1 + local.set $1 end - local.get $3 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $1 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $0 - i32.gt_s - local.get $0 - local.get $1 - i32.gt_s - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (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.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $5 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 local.get $4 - i32.const 0 - i32.gt_s - if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u + f32.load + f32.const 11 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 + local.get $1 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.add + local.set $0 + br $while-continue|057 end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const 1 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 local.get $0 local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $3 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + local.get $2 local.get $0 - local.get $4 - i32.const 1 + local.tee $1 + i32.const 2 i32.shl i32.add - local.get $3 - i32.store16 - local.get $0 - local.get $7 + f32.load + f32.const 5 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + local.get $1 i32.const 1 - i32.shl i32.add - local.get $6 - i32.store16 + local.set $0 + br $while-continue|060 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end + i32.const -1 + local.set $1 end local.get $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 local.get $4 + i32.load offset=8 i32.const 2 - i32.ge_s - if - local.get $0 - i32.load16_u - local.set $1 - local.get $0 + i32.shr_u + local.tee $3 + i32.const 2 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|063 local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - i32.store16 local.get $3 - local.get $1 - i32.store16 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + f32.load + f32.const 5 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 local.get $1 i32.const 1 - i32.shl i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load16_u - local.set $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.store16 - local.get $0 - local.get $6 - i32.store16 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + local.set $0 + br $while-continue|063 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $1 end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load16_u offset=2 - local.set $1 - local.get $0 - local.get $0 - i32.load16_u - i32.store16 offset=2 - local.get $0 local.get $1 - i32.store16 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + 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 $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + (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) - block $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 - local.tee $3 - i32.load offset=8 + 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 + if + i32.const 32336 + i32.const 32384 i32.const 1 - i32.shr_u - local.tee $0 i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $3 - i32.load offset=4 - local.set $5 + 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 7024 + i32.store + local.get $1 + i32.const 7036 + i32.load + local.tee $1 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store offset=4 + loop $for-loop|0 local.get $0 - i32.const 2 - i32.eq + local.get $1 + i32.lt_s if - local.get $5 - i32.load16_u offset=2 - local.set $0 - local.get $5 - i32.load16_u - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $0 local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $2 - i32.store16 offset=2 - local.get $5 - local.get $0 - i32.store16 - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $0 - i32.const 256 - i32.lt_s - if local.get $0 - local.set $2 - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $5 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $5 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $5 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.store16 - br $while-continue|1 - end - end - end - local.get $5 - local.get $0 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $5 + i32.const 7024 local.get $0 - local.get $1 - call $~lib/util/sort/weakHeapSort + 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 - local.get $3 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - local.tee $0 - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - local.get $0 - i32.const 65535 - i32.and - local.tee $0 - i32.gt_u - local.get $0 - local.get $1 - i32.gt_u - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (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.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $5 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 local.get $4 - i32.const 0 - i32.gt_s - if + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|0 + local.get $0 local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 + i32.lt_s + if local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 + local.get $0 + local.tee $1 + i32.const 3 i32.shl i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u + f64.load + f64.const 0 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $1 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.add + local.set $0 + br $while-continue|0 end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + end + i32.const -1 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.01 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 local.get $0 local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add local.get $3 - i32.store local.get $0 - local.get $7 - i32.const 2 + local.tee $1 + i32.const 3 i32.shl i32.add - local.get $6 - i32.store + f64.load + f64.const 11 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.01 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|02 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end + i32.const -1 + local.set $1 end local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + i32.const 1 local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load - local.set $1 - local.get $0 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 local.get $0 local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $3 - local.get $1 - i32.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + f64.load + f64.const -1 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 local.get $1 i32.const 1 - i32.shl i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.set $3 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - local.get $0 - local.get $6 - i32.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + local.set $0 + br $while-continue|05 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $1 end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 local.get $1 - i32.store - ) - (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 - local.tee $3 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + local.get $2 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $0 + local.tee $4 + i32.eqz i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $3 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + local.get $2 i32.load offset=4 - local.set $5 - local.get $0 - i32.const 2 - i32.eq - if - local.get $5 - i32.load offset=4 - local.set $0 - local.get $5 - i32.load - local.set $2 - i32.const 2 - global.set $~argumentsLength + local.set $3 + loop $while-continue|08 local.get $0 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 + local.get $4 i32.lt_s if - local.get $5 - local.get $2 - i32.store offset=4 - local.get $5 + local.get $3 local.get $0 - i32.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $0 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $5 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $5 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - br $while-continue|1 - end - end - end - local.get $5 - local.get $0 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|08 end - else - local.get $5 - local.get $0 - local.get $1 - call $~lib/util/sort/weakHeapSort end + i32.const -1 + local.set $1 end - local.get $3 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.lt_s - local.get $0 - local.get $1 - i32.gt_s - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (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.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 2 + i32.le_u + i32.const 1 local.get $4 - i32.const 0 - i32.gt_s - if + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|011 + local.get $0 local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 + i32.lt_s + if local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 + local.get $0 + local.tee $1 + i32.const 3 i32.shl i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + local.get $1 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.add + local.set $0 + br $while-continue|011 end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 3 + i32.le_u + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|014 local.get $0 local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add local.get $3 - i32.store local.get $0 - local.get $7 - i32.const 2 + local.tee $1 + i32.const 3 i32.shl i32.add - local.get $6 - i32.store + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|014 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end + i32.const -1 + local.set $1 end local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 4 + i32.le_u + i32.const 1 local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load - local.set $1 - local.get $0 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 local.get $0 local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $3 - local.get $1 - i32.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 + i32.lt_s + if + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 local.get $1 i32.const 1 - i32.shl i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.set $3 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - local.get $0 - local.get $6 - i32.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + local.set $0 + br $while-continue|017 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $1 end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 local.get $1 - i32.store - ) - (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $0 - local.tee $3 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $2 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $0 - i32.const 1 + local.tee $4 + i32.const 10 i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $3 + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $2 i32.load offset=4 - local.set $5 - local.get $0 - i32.const 2 - i32.eq - if - local.get $5 - i32.load offset=4 - local.set $0 - local.get $5 - i32.load - local.set $2 - i32.const 2 - global.set $~argumentsLength + local.set $3 + loop $while-continue|020 local.get $0 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 + local.get $4 i32.lt_s if - local.get $5 - local.get $2 - i32.store offset=4 - local.get $5 + local.get $3 local.get $0 - i32.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $0 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $5 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $5 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - br $while-continue|1 - end - end - end - local.get $5 - local.get $0 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 1 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|020 end - else - local.get $5 - local.get $0 - local.get $1 - call $~lib/util/sort/weakHeapSort end + i32.const -1 + local.set $1 end - local.get $3 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.lt_u - local.get $0 - local.get $1 - i32.gt_u - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - (local $8 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $6 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.const -100 + i32.le_s + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 + local.get $3 + i32.const 100 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 i32.const 0 i32.gt_s - if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $6 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end + select + local.set $0 + local.get $2 + i32.load offset=4 + local.set $1 + loop $while-continue|023 local.get $0 local.get $3 - i32.const 1 - i32.shr_s - local.tee $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 i32.lt_s if - local.get $6 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + local.get $1 local.get $0 - local.get $4 i32.const 3 i32.shl i32.add - local.get $5 - i64.store + f64.load + f64.const 1 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 local.get $0 - local.get $3 - i32.const 3 - i32.shl + i32.const 1 i32.add - local.get $7 - i64.store + local.set $0 + br $while-continue|023 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end + i32.const -1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 i32.ge_s - if - local.get $0 - i64.load - local.set $5 - local.get $0 - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load - i64.store - local.get $1 - local.get $5 - i64.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|00 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 + f64.load + f64.const 0 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $0 i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i64.load - local.set $5 - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $0 - local.get $7 - i64.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + i32.sub + local.set $2 + br $while-continue|00 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $0 end - local.get $6 - call $~lib/rt/tlsf/__free - local.get $0 - i64.load offset=8 - local.set $5 - local.get $0 - local.get $0 - i64.load - i64.store offset=8 local.get $0 - local.get $5 - i64.store - ) - (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - local.tee $2 + if + i32.const 0 + i32.const 1568 + i32.const 590 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $8 + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 + local.get $2 + local.get $3 + i32.add + local.get $3 i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 i32.load offset=4 - local.set $4 - local.get $8 - i32.const 2 - i32.eq - if - local.get $4 - i64.load offset=8 - local.set $5 - local.get $4 - i64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $1 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) + local.set $3 + loop $while-continue|06 + local.get $2 i32.const 0 - i32.lt_s + i32.ge_s if - local.get $4 - local.get $6 - i64.store offset=8 - local.get $4 - local.get $5 - i64.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $8 - i32.const 256 - i32.lt_u - if - local.get $1 - local.set $3 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - if - local.get $4 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $7 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $3 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $4 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store - br $while-continue|1 - end - end - end - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 11 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|06 end - else - local.get $4 - local.get $8 - local.get $1 - call $~lib/util/sort/weakHeapSort end + i32.const -1 + local.set $0 end - local.get $2 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) - local.get $0 - local.get $1 - i64.gt_s - local.get $0 - local.get $1 - i64.lt_s - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) - local.get $0 - local.get $1 - i64.lt_s local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 591 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength local.get $1 - i64.gt_s - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - (local $8 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 + i32.load offset=8 + i32.const 3 i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $6 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 i32.const 0 - i32.gt_s - if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $6 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|012 + local.get $2 + i32.const 0 + i32.ge_s + if local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 + local.get $2 + local.tee $0 + i32.const 3 i32.shl i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u + f64.load + f64.const -1 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 + local.get $0 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.sub + local.set $2 + br $while-continue|012 end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 + 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 592 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.load offset=4 + local.set $3 + loop $while-continue|018 local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s if - local.get $6 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 + local.get $3 + local.get $2 + local.tee $0 + i32.const 3 i32.shl i32.add - local.tee $8 - local.get $8 - i32.load + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 + local.get $0 i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + i32.sub + local.set $2 + br $while-continue|018 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 593 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $2 + i32.const 1 + i32.sub + i32.const 4 + local.get $2 + i32.const 4 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|024 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 local.get $0 - local.get $4 i32.const 3 i32.shl i32.add - local.get $5 - i64.store + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|024 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 594 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + local.get $2 + i32.const 1 + i32.sub + i32.const 3 + local.get $2 + i32.const 3 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 local.get $0 - local.get $3 i32.const 3 i32.shl i32.add - local.get $7 - i64.store + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|027 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end + i32.const -1 + local.set $0 end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 595 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + local.get $2 + i32.const 1 + i32.sub i32.const 2 - i32.ge_s - if - local.get $0 - i64.load - local.set $5 - local.get $0 + local.get $2 + i32.const 2 + i32.le_s + select + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|030 local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load - i64.store - local.get $1 - local.get $5 - i64.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + local.get $0 i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end + i32.sub + local.set $0 + br $while-continue|030 end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i64.load - local.set $5 - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $0 - local.get $7 - i64.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $0 end - local.get $6 - call $~lib/rt/tlsf/__free - local.get $0 - i64.load offset=8 - local.set $5 - local.get $0 - local.get $0 - i64.load - i64.store offset=8 local.get $0 - local.get $5 - i64.store - ) - (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 - local.tee $2 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 596 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $8 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + local.get $2 i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 + i32.sub + i32.const 100 local.get $2 + i32.const 100 + i32.le_s + select + local.set $0 + local.get $1 i32.load offset=4 - local.set $4 - local.get $8 - i32.const 2 - i32.eq - if - local.get $4 - i64.load offset=8 - local.set $5 - local.get $4 - i64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $1 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) + local.set $2 + loop $while-continue|033 + local.get $0 i32.const 0 - i32.lt_s + i32.ge_s if - local.get $4 - local.get $6 - i64.store offset=8 - local.get $4 - local.get $5 - i64.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $8 - i32.const 256 - i32.lt_u - if - local.get $1 - local.set $3 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - if - local.get $4 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $7 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $3 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $4 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store - br $while-continue|1 - end - end - end - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 1 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|033 end - else - local.get $4 - local.get $8 - local.get $1 - call $~lib/util/sort/weakHeapSort end + i32.const -1 + local.set $0 end - local.get $2 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) - local.get $0 - local.get $1 - i64.gt_u - local.get $0 - local.get $1 - i64.lt_u - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 - local.get $1 - i64.lt_u - local.get $0 - local.get $1 - i64.gt_u - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - (local $8 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $6 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 + i32.ne + if i32.const 0 - i32.gt_s - if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $6 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 + i32.const 1568 + i32.const 597 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 + local.get $2 + i32.const 10 + i32.sub + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|036 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 3 i32.shl i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u + f64.load + f64.const 1 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 + local.get $0 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.sub + local.set $0 + br $while-continue|036 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 598 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 + local.get $2 + i32.const 11 + i32.sub + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + loop $while-continue|039 local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s if - local.get $6 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + local.get $2 local.get $0 - local.get $4 - i32.const 2 + i32.const 3 i32.shl i32.add - local.get $5 - f32.store + f64.load + f64.const 1 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store + i32.const 1 + i32.sub + local.set $0 + br $while-continue|039 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 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 599 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Float64Array#subarray + local.tee $4 + i32.store offset=8 + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - f32.load - local.set $5 - local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load - f32.store - local.get $1 - local.get $5 - f32.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + f64.load + f64.const 3 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 local.get $1 i32.const 1 - i32.shl i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end + local.set $0 + br $while-continue|042 end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - f32.load - local.set $5 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - local.get $0 - local.get $7 - f32.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end + i32.const -1 + local.set $1 end - local.get $6 - call $~lib/rt/tlsf/__free - local.get $0 - f32.load offset=4 - local.set $5 - local.get $0 - local.get $0 - f32.load - f32.store offset=4 - local.get $0 - local.get $5 - f32.store - ) - (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 f32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - local.tee $2 + local.get $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 + local.get $4 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $8 + local.tee $3 + i32.eqz i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 + local.get $4 i32.load offset=4 - local.set $4 - local.get $8 - i32.const 2 - i32.eq - if - local.get $4 - f32.load offset=4 - local.set $5 - local.get $4 - f32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $1 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 + local.set $2 + loop $while-continue|045 + local.get $0 + local.get $3 i32.lt_s if - local.get $4 - local.get $6 - f32.store offset=4 - local.get $4 - local.get $5 - f32.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $8 - i32.const 256 - i32.lt_u - if - local.get $1 - local.set $3 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - if - local.get $4 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - local.get $7 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $3 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $4 - local.get $0 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - br $while-continue|1 - end - end - end - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 4 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|045 end - else - local.get $4 - local.get $8 - local.get $1 - call $~lib/util/sort/weakHeapSort end + i32.const -1 + local.set $1 end - local.get $2 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - local.get $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.tee $2 - local.get $1 - i32.reinterpret_f32 - local.tee $3 - local.get $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.tee $3 - i32.gt_s - local.get $2 - local.get $3 - i32.lt_s - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - f32.lt - local.get $0 - local.get $1 - f32.gt - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - local.get $0 local.get $1 - f64.lt - local.get $0 - local.get $1 - f64.gt - i32.sub - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $invalid - 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 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $invalid - end - return - end - return - end - unreachable - end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - ) - (func $~start - call $start:std/typedarray - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 14468 - i32.lt_s if - i32.const 30880 - i32.const 30928 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 call $~lib/builtins/abort unreachable end - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> - (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3600 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - 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|0 - local.get $2 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 local.get $4 - i32.lt_s - if - local.get $2 - local.get $6 - i32.add - i32.load8_s - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|048 + local.get $0 local.get $3 - i32.add - local.get $7 - local.get $2 - local.get $1 - i32.const 3600 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 5 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|048 + end end + i32.const -1 + local.set $1 end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - 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 $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 388 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|051 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 9 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|051 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 389 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - 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/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> - (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3632 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - 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|0 - local.get $2 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 local.get $4 - i32.lt_s - if - local.get $2 - local.get $6 - i32.add - i32.load8_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|054 + local.get $0 local.get $3 - i32.add - local.get $7 - local.get $2 - local.get $1 - i32.const 3632 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 10 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|054 + end end + i32.const -1 + local.set $1 end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - 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 $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 + local.get $1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 388 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 + i32.const 0 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 + local.get $4 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|057 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 11 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|057 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 + local.get $1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 390 + i32.const 608 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/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> - (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - 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 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 - global.get $~lib/memory/__stack_pointer - i32.const 3664 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - 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|0 - local.get $2 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 local.get $4 - i32.lt_s - if - local.get $2 - local.get $6 - i32.add - i32.load8_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.const 1 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 + local.get $0 local.get $3 - i32.add - local.get $7 - local.get $2 - local.get $1 - i32.const 3664 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 5 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|060 + end end + i32.const -1 + local.set $1 end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - 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 $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 388 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 + i32.const 2 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 + local.get $4 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $3 + i32.const 2 + i32.le_u + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|063 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const 5 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|063 + end + end + i32.const -1 + local.set $1 end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 + local.get $1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 390 + i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable @@ -20375,3230 +23443,4330 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/utoa32_dec_lut (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) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3696 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u if - local.get $6 - local.get $3 + 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 - local.tee $8 i32.add - i32.load16_s - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 - i32.add - local.get $9 local.get $3 - local.get $1 - i32.const 3696 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store16 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7308 + i32.add + i64.load32_u local.get $3 - i32.const 1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7308 i32.add - local.set $3 - br $for-loop|0 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne + local.get $1 + i32.const 100 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 7308 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.ne + local.get $1 + i32.const 10 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 7308 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.store local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s 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 - global.get $~lib/memory/__stack_pointer - i32.const 3728 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.lt_s + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end local.get $1 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 + i32.const 24 i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 + i32.const 24 + i32.shr_s + 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.shl - local.tee $8 i32.add - i32.load16_u - local.set $9 + else + local.get $1 + i32.const 10000 + i32.ge_u i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 i32.add - local.get $9 - local.get $3 local.get $1 - i32.const 3728 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $3 - i32.const 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 - local.set $3 - br $for-loop|0 end end + local.set $1 local.get $0 + local.get $3 + local.get $1 local.get $2 - i32.store - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - 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/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> - (local $0 i32) + (func $~lib/typedarray/Int8Array#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 $7 i32) - (local $8 i32) - (local $9 i32) + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + 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 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 - global.get $~lib/memory/__stack_pointer - i32.const 3760 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $4 + 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 + i32.load8_s + call $~lib/util/number/itoa32 + 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 11 + i32.add + i32.mul + i32.const 11 + 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.add + i32.load8_s + 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 $3 - i32.const 2 + local.get $0 + local.get $1 + i32.const 1 i32.shl - local.tee $8 i32.add - i32.load - local.set $9 - i32.const 3 - global.set $~argumentsLength local.get $2 - local.get $8 - i32.add - local.get $9 local.get $3 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered local.get $1 - i32.const 3760 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store - local.get $3 - i32.const 1 i32.add - local.set $3 - br $for-loop|0 + 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 - local.get $2 - i32.store + ) + (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 $2 - call $~lib/rt/itcms/__link + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $1 + i32.eqz + i32.const 1 local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne + select if i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 + 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 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.ne - if + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.set $2 + local.get $1 + local.set $3 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + loop $do-continue|0 + local.get $2 + i64.load + local.get $3 + 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 $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + local.get $2 + i32.load16_u + local.tee $1 + local.get $3 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $1 + 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 + br $while-continue|1 + end + end i32.const 0 - i32.const 1568 - i32.const 390 - 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.eqz ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3792 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 + i32.const 255 + i32.and + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 255 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end local.get $1 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new + i32.const 255 + i32.and local.tee $2 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 + 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 - i32.load - local.set $9 + else + local.get $1 + i32.const 10000 + i32.ge_u i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 i32.add - local.get $9 - local.get $3 local.get $1 - i32.const 3792 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store - local.get $3 - i32.const 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 - local.set $3 - br $for-loop|0 end end + local.set $1 local.get $0 local.get $2 - i32.store - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - 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 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - 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 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $1 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> - (local $0 i32) + (func $~lib/typedarray/Uint8Array#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 $7 i32) - (local $8 i32) - (local $9 i64) + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + 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 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 - global.get $~lib/memory/__stack_pointer - i32.const 3824 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $4 + 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 + i32.load8_u + call $~lib/util/number/utoa32 + 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 10 + i32.add + i32.mul + i32.const 10 + 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.add + i32.load8_u + 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 $3 - i32.const 3 + local.get $0 + local.get $1 + i32.const 1 i32.shl - local.tee $8 i32.add - i64.load - local.set $9 - i32.const 3 - global.set $~argumentsLength local.get $2 - local.get $8 - i32.add - local.get $9 local.get $3 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered local.get $1 - i32.const 3824 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i64) - i64.store - local.get $3 - i32.const 1 i32.add - local.set $3 - br $for-loop|0 + 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 - local.get $2 - i32.store - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne + i32.lt_s + local.tee $2 if + local.get $0 + i32.const 45 + i32.store16 i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.sub + local.set $1 end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.set $1 + local.get $0 + local.get $3 + local.get $1 + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> - (local $0 i32) + (func $~lib/typedarray/Int16Array#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 $7 i32) - (local $8 i32) - (local $9 i64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 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 - global.get $~lib/memory/__stack_pointer - i32.const 3856 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.shr_u + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + 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.get $4 - i32.const 3 - i32.shl - local.tee $7 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $4 + 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 - local.get $6 - local.get $3 - i32.const 3 - i32.shl - local.tee $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i64.load - local.set $9 - i32.const 3 - global.set $~argumentsLength + 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 - local.get $8 + i32.eqz + if + local.get $3 + i32.load16_s + call $~lib/util/number/itoa32 + 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 11 i32.add - local.get $9 - local.get $3 + i32.mul + i32.const 11 + 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 1 + i32.shl + i32.add + i32.load16_s + 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 3856 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i64) - i64.store + i32.const 1 + i32.shl + i32.add local.get $3 + local.get $2 i32.const 1 + i32.shl i32.add - local.set $3 - br $for-loop|0 + i32.load16_s + 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 - local.get $2 - i32.store - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 65535 + i32.and + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 65535 + i32.and + 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.set $1 local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - 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 + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $1 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> - (local $0 i32) + (func $~lib/typedarray/Uint16Array#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 $7 i32) - (local $8 i32) - (local $9 f32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 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 - global.get $~lib/memory/__stack_pointer - i32.const 3888 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.shr_u + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + 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.get $4 - i32.const 2 - i32.shl - local.tee $7 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $4 + 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 - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - f32.load - local.set $9 - i32.const 3 - global.set $~argumentsLength + 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 - local.get $8 + i32.eqz + if + local.get $3 + i32.load16_u + call $~lib/util/number/utoa32 + 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 10 i32.add - local.get $9 - local.get $3 + i32.mul + i32.const 10 + 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 1 + i32.shl + i32.add + i32.load16_u + 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 3888 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_f32) - f32.store + i32.const 1 + i32.shl + i32.add local.get $3 + local.get $2 i32.const 1 + i32.shl i32.add - local.set $3 - br $for-loop|0 + i32.load16_u + 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 - local.get $2 - i32.store - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne + i32.lt_s + local.tee $2 if + local.get $0 + i32.const 45 + i32.store16 i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.sub + local.set $1 end - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne + local.get $1 + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return end local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $1 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> - (local $0 i32) + (func $~lib/typedarray/Int32Array#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 $7 i32) - (local $8 i32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3920 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.shr_u + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - local.get $1 - i32.load offset=4 - local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + 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.get $4 - i32.const 3 - i32.shl - local.tee $7 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $4 + 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 + i32.load + call $~lib/util/number/itoa32 + 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 11 + i32.add + i32.mul + i32.const 11 + 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 2 + i32.shl + i32.add + i32.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 $3 - i32.const 3 + local.get $0 + local.get $1 + i32.const 1 i32.shl - local.tee $8 i32.add - f64.load - local.set $9 - i32.const 3 - global.set $~argumentsLength + local.get $3 local.get $2 - local.get $8 + i32.const 2 + i32.shl i32.add - local.get $9 - local.get $3 - local.get $1 - i32.const 3920 i32.load - call_indirect $0 (type $f64_i32_i32_=>_f64) - f64.store - local.get $3 - i32.const 1 + call $~lib/util/number/itoa_buffered + local.get $1 i32.add - local.set $3 - br $for-loop|0 + 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 - local.get $2 - i32.store + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end local.get $0 - local.get $2 - call $~lib/rt/itcms/__link + local.get $1 + local.get $1 + 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.tee $0 + call $~lib/util/number/utoa32_dec_lut local.get $0 - local.get $2 - i32.store offset=4 + ) + (func $~lib/typedarray/Uint32Array#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 - local.get $7 - i32.store offset=8 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - 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/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - 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 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int8Array#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 + i32.const 1 + i32.sub + local.tee $2 i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + i32.load + call $~lib/util/number/utoa32 + 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 10 + i32.add + i32.mul + i32.const 10 + 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 2 + i32.shl + i32.add + i32.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 2 + i32.shl + i32.add + i32.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 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable + ) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + if + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7308 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7308 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + 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 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7308 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7308 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i64.const 0 + i64.lt_s + local.tee $3 if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne + local.get $1 + i64.const 10 + i64.lt_u if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $3 + i32.const 1 + i32.add + return end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne + local.get $1 + i64.const 4294967295 + i64.le_u if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.wrap_i64 + local.tee $4 + 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 $4 + local.get $2 + local.get $3 + i32.add + 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.get $3 + i32.add + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - 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 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3984 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint8Array#filter - local.tee $0 - i32.store offset=8 + ) + (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.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $4 local.get $0 i32.load offset=8 i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shr_u + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - 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 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 4016 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - 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 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 - i32.ne - if + 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.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - local.get $0 + i32.const 32336 + i32.const 32384 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne + 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 - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 + return end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne + local.get $1 + i64.const 4294967295 + i64.le_u if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - 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 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Int16Array#filter - local.tee $0 - i32.store offset=8 + ) + (func $~lib/typedarray/Uint64Array#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.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $4 local.get $0 i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - 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/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - (local $0 i32) + i32.shr_u + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - 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 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4080 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint16Array#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne - if + 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.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $4 + i64.load + 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 + 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 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.wrap_i64 + local.tee $3 + 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.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 $3 + local.get $0 + 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.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 $2 + local.get $0 + call $~lib/util/number/utoa64_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + end + local.set $0 + 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 20 + i32.add + i32.mul + i32.const 20 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 + i32.const 32336 + i32.const 32384 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 5 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4112 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int32Array#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - 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 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store - local.get $0 + (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 - 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 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4144 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint32Array#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load + local.get $4 i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne - if + local.set $8 + loop $while-continue|0 + local.get $8 i32.const 0 - i32.const 1568 - i32.const 417 - 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/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - 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 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4176 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int64Array#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $8 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $2 + i32.const 1000000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 100000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 10000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000 + i32.div_u + local.set $4 + local.get $2 + i32.const 100000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000 + i32.div_u + local.set $4 + local.get $2 + i32.const 10000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100 + i32.div_u + local.set $4 + local.get $2 + i32.const 100 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10 + i32.div_u + local.set $4 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $4 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $4 + end + local.get $4 + local.get $6 + i32.or + if + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $8 + i32.const 1 + i32.sub + local.set $8 + local.get $7 + local.get $2 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + i64.shl + i64.add + local.tee $1 + local.get $5 + i64.le_u + if + local.get $8 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $8 + i32.const 2 + i32.shl + i32.const 10032 + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|3 + local.get $3 + local.get $5 + local.get $1 + i64.sub + i64.le_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $9 + local.get $1 + i64.sub + local.get $1 + local.get $3 + i64.add + local.tee $7 + local.get $9 + i64.sub + i64.gt_u + local.get $7 + local.get $9 + i64.lt_u + select + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end + end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return + end + br $while-continue|0 + end end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $10 + i64.extend_i32_s + local.set $1 + loop $while-continue|4 + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $7 + i64.const 10 + i64.mul + local.tee $3 + local.get $1 + i64.shr_u + local.tee $7 + local.get $6 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $8 + i32.const 1 + i32.sub + local.set $8 + local.get $5 + local.get $3 + local.get $12 + i64.and + local.tee $7 + i64.le_u + br_if $while-continue|4 end - local.get $0 + local.get $8 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + local.set $1 + local.get $9 i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $8 + i32.sub i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.shl + i32.const 10032 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set + i64.load32_u + i64.mul + local.set $3 local.get $0 + local.get $6 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 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4208 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint64Array#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - if + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|6 + local.get $11 + local.get $5 + local.get $1 + i64.sub + i64.le_u i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $3 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $3 + local.get $1 + i64.sub + local.get $1 + local.get $11 + i64.add + local.tee $7 + local.get $3 + i64.sub + i64.gt_u + local.get $3 + local.get $7 + i64.gt_u + select + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $11 + i64.add + local.set $1 + br $while-continue|6 + end end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne + local.get $2 + local.get $4 + i32.store16 + local.get $6 + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $4 + i32.const 21 + i32.le_s 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 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4240 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Float32Array#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if + local.get $1 + local.get $4 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $4 + i32.const 2 + i32.add + else + local.get $4 + i32.const 21 + i32.le_s i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if + local.get $4 i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $4 + i32.const 0 + i32.le_s + i32.const 0 + local.get $4 + i32.const -6 + i32.gt_s + select + if (result i32) + local.get $0 + i32.const 2 + local.get $4 + i32.sub + local.tee $5 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $5 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if (result i32) + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $3 + i32.const 4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + 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.set $1 + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 offset=4 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + call $~lib/memory/memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $3 + i32.const 4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $5 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + 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 $2 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $5 + select + i32.store16 offset=4 + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.add + end + end + end end - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable + ) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + f64.const 0 + f64.lt + local.tee $10 + if (result f64) + local.get $0 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + else + local.get $1 end - local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $2 + i64.const 4503599627370495 + i64.and + i64.add + local.tee $3 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $2 + local.get $2 + i64.clz + i32.wrap_i64 + local.tee $8 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $9 i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - 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/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $9 + select + i32.const 1075 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - 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 + local.tee $9 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 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4272 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Float64Array#filter - local.tee $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - 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 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $8 + i32.sub + local.set $8 + local.get $3 + local.get $3 + i64.const 4503599627370496 + i64.eq i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - 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/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store - local.get $0 - i32.const 255 - i32.and - i32.const 6448 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 513 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.tee $5 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $5 + i32.sub + local.get $8 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $8 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + local.tee $8 + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_f64_s + local.tee $5 local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 514 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 515 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $5 + f64.convert_i32_s + f64.ne i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 i32.shr_s - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 i32.const 1 - i32.const 6448 + i32.add + local.tee $5 + i32.const 3 + i32.shl + local.tee $11 + i32.sub + global.set $~lib/util/number/_K + local.get $11 + i32.const 9160 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $5 i32.const 1 - call $~lib/array/Array#__get - i32.const 24 i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 + i32.const 9856 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and + local.set $2 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $4 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul + local.get $2 + local.get $7 + i64.mul + local.get $2 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $4 local.get $0 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i32.const 24 + local.get $10 + i32.const 1 i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6496 - i32.store offset=8 + i32.add local.get $0 - i32.load offset=4 - local.set $2 + local.get $6 + local.get $3 + local.get $3 + i64.clz + i32.wrap_i64 + local.tee $0 + i64.extend_i32_s + i64.shl + local.tee $3 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul + local.get $2 + local.get $7 + i64.mul + local.get $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $3 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $5 + local.get $9 local.get $0 - i32.load offset=8 - local.set $3 - loop $for-loop|0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $5 + local.get $8 + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $6 + global.get $~lib/util/number/_frc_minus + local.tee $3 + i64.const 32 + i64.shr_u + local.tee $4 + i64.mul + local.get $2 + local.get $4 + i64.mul + local.get $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $2 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $3 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $6 + i64.mul + local.get $3 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $10 + call $~lib/util/number/genDigits + local.get $10 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $10 + i32.add + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + local.get $1 + f64.const 0 + f64.eq + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + return + end + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if local.get $1 - local.get $3 - i32.lt_s + local.get $1 + f64.ne if - local.get $1 - local.get $2 - i32.add - i32.load8_s + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 i32.const 3 - global.set $~argumentsLength + return + else local.get $1 + f64.const 0 + f64.lt + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end local.get $0 - i32.const 6496 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 i32.add - local.set $1 - br $for-loop|0 + return end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 518 - 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/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store local.get $0 - i32.const 65535 - i32.and - i32.const 6448 - local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 513 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 514 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 515 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/util/number/dtoa_core ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> - (local $0 i32) + (func $~lib/typedarray/Float32Array#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 2 + i32.shr_u + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + 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 offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6592 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $1 - local.get $3 + block $__inlined_func$~lib/util/string/joinFloatArray + 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/joinFloatArray + end + block $folding-inner0 local.get $2 - local.get $1 + i32.eqz + if + local.get $3 + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa + 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.shl + i32.shr_u + local.tee $4 + i32.const 28 i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $1 + i32.mul + i32.const 28 + 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 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa_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 - i32.const 6592 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 + i32.shl i32.add - local.set $1 - br $for-loop|0 + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa_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/joinFloatArray end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 518 - 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 + local.get $0 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> - (local $0 i32) + (func $~lib/typedarray/Float64Array#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 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + 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 offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - 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 $0 - 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 $0 - 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 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $1 - local.get $3 + block $__inlined_func$~lib/util/string/joinFloatArray + 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/joinFloatArray + end + block $folding-inner0 + local.get $2 + i32.eqz + if + local.get $3 + f64.load + call $~lib/util/number/dtoa + 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 28 + i32.add + i32.mul + i32.const 28 + 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 + f64.load + call $~lib/util/number/dtoa_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 - i32.load16_u + local.get $3 + local.get $2 i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 - i32.const 6624 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered local.get $1 - i32.const 1 i32.add - local.set $1 - br $for-loop|0 + 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/joinFloatArray end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 518 - 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 + local.get $0 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $3 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store - i32.const 6448 - local.get $1 - call $~lib/array/Array#__get - local.get $0 - i32.ne + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 513 - i32.const 5 + 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 $1 - global.get $std/typedarray/forEachCallCount - i32.ne + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + i32.gt_u if - i32.const 0 - i32.const 1568 - i32.const 514 + i32.const 1360 + i32.const 1632 + i32.const 1826 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 515 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const -1 + i32.eq + if (result i32) + local.get $2 + local.get $1 + i32.sub + else + i32.const 1056 + i32.const 1632 + i32.const 1835 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.set $3 + else + local.get $2 + local.get $1 + local.get $3 + i32.add + i32.lt_s + if + i32.const 1056 + i32.const 1632 + i32.const 1840 + i32.const 7 + call $~lib/builtins/abort + unreachable + end end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + 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 $3 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $1 i32.add - global.set $std/typedarray/forEachCallCount + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> - (local $0 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - 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 $0 - 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 $0 - 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 - local.get $0 - i32.load offset=4 - local.set $2 local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $1 - local.get $3 + i32.const 10316 + i32.load + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + i32.const 10308 + i32.load + local.set $2 + i32.const 10316 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 i32.lt_s if + local.get $0 + local.get $1 + i32.add local.get $2 local.get $1 i32.const 2 i32.shl i32.add i32.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 - i32.const 6656 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) + i32.store8 local.get $1 i32.const 1 i32.add @@ -23606,542 +27774,377 @@ br $for-loop|0 end end - global.get $std/typedarray/forEachCallCount + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=8 + local.get $1 + i32.load offset=8 i32.const 3 - i32.ne + i32.shr_u + i32.const 6 + i32.add + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 518 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 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/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - 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 $0 - 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 $0 - 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 local.get $0 i32.load offset=4 - local.set $2 - local.get $0 + i32.const 6 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.set $3 + local.set $1 loop $for-loop|0 local.get $1 - local.get $3 - i32.lt_s + local.get $2 + i32.gt_s if + local.get $0 local.get $2 - local.get $1 - i32.const 2 - i32.shl i32.add - i32.load + local.get $3 + local.get $2 i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 - i32.const 6688 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $1 + i32.shl + i32.add + i64.load + i64.store8 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 518 - 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/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) local.get $0 - i32.const 6448 + i32.load offset=8 local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne + i32.load offset=8 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 513 - i32.const 5 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end + local.get $0 + i32.load offset=4 local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 514 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 515 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.load offset=4 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.copy ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - 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 $0 + i32.load offset=8 + local.get $1 + i32.load offset=8 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 $0 - 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.shr_u + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 - local.set $2 - local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u - local.set $3 + local.set $1 loop $for-loop|0 local.get $1 - local.get $3 - i32.lt_s + local.get $2 + i32.gt_s if + local.get $0 local.get $2 - local.get $1 - i32.const 3 + i32.add + local.get $3 + local.get $2 + i32.const 1 i32.shl i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 - i32.const 6720 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $1 + i32.load16_s + i32.store8 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + local.get $0 + i32.load offset=8 + i32.const 10572 + i32.load + i32.const 7 + i32.add + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 518 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.load offset=4 + i32.const 7 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 10564 + i32.load + i32.const 10568 + i32.load + call $~lib/memory/memory.copy ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 6448 + (local $5 i32) + local.get $2 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 $0 - 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 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1864 + i32.const 19 + call $~lib/builtins/abort + unreachable + end local.get $0 - 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.load offset=8 + local.get $2 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 + local.get $2 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 local.set $2 - local.get $0 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 + local.set $1 loop $for-loop|0 local.get $1 local.get $3 - i32.lt_s + i32.gt_s if + local.get $0 + local.get $3 + i32.add local.get $2 - local.get $1 + local.get $3 i32.const 3 i32.shl i32.add i64.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 - i32.const 6752 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $1 + local.tee $4 + i32.wrap_i64 + local.tee $5 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i64.extend_i32_s + local.get $4 + i32.const 255 + local.get $5 + i32.sub + i32.const 31 + i32.shr_s + i64.extend_i32_s + i64.or + i64.and + i64.store8 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 br $for-loop|0 end end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 518 - 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/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store - local.get $0 - i32.const 6448 - local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 513 - i32.const 5 + i32.const 1360 + i32.const 1632 + i32.const 1864 + i32.const 19 call $~lib/builtins/abort unreachable end + local.get $0 + i32.load offset=8 + local.get $2 local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.add + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 514 - i32.const 5 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end + local.get $0 + i32.load offset=4 local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 515 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.gt_s + if + local.get $2 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.tee $0 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $0 + i32.const 255 + local.get $0 + 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|0 + end + end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> - (local $0 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - 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 + i32.const 10316 + i32.load local.get $0 + i32.load offset=8 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 $0 - 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.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 + local.set $0 + i32.const 10308 + i32.load local.set $2 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u + i32.const 10316 + i32.load local.set $3 loop $for-loop|0 local.get $1 local.get $3 i32.lt_s if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add 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 $0 - i32.const 6784 i32.load - call_indirect $0 (type $f32_i32_i32_=>_none) + i32.store16 local.get $1 i32.const 1 i32.add @@ -24149,164 +28152,194 @@ br $for-loop|0 end end - global.get $std/typedarray/forEachCallCount + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 i32.const 3 - i32.ne + i32.shr_u + i32.const 6 + i32.add + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 518 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store - local.get $0 - i32.const 6448 + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 513 - i32.const 5 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end + local.get $0 + i32.load offset=4 + local.set $0 local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 514 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $3 + i32.add + i32.load8_u + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 4 + i32.add + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 515 - i32.const 5 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.load offset=4 + i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.copy ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> - (local $0 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - 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 + i32.const 10572 + i32.load + i32.const 7 + i32.add local.get $0 + i32.load offset=8 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 $0 - 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.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 + i32.const 14 + i32.add + local.set $0 + i32.const 10564 + i32.load local.set $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u + i32.const 10572 + i32.load local.set $3 loop $for-loop|0 local.get $1 local.get $3 i32.lt_s if - local.get $2 + local.get $0 local.get $1 - i32.const 3 + i32.const 1 i32.shl i32.add - f64.load - i32.const 3 - global.set $~argumentsLength local.get $1 - local.get $0 - i32.const 6816 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_none) + local.get $2 + i32.add + i32.load8_s + i32.store16 local.get $1 i32.const 1 i32.add @@ -24314,4786 +28347,5023 @@ br $for-loop|0 end end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + i32.const 10316 + i32.load + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 518 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.const 10308 + i32.load + i32.const 10312 + i32.load + call $~lib/memory/memory.copy ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - i32.store offset=8 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 6 + i32.add + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $1 loop $for-loop|0 - local.get $0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if - local.get $2 - local.get $0 - i32.const 6912 local.get $0 - call $~lib/array/Array#__get - i32.const 24 + local.get $2 + i32.const 2 i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set + i32.add local.get $3 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i32.const 24 + local.get $2 + i32.const 3 i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 + i32.add + i64.load + i64.store32 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end - local.get $2 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 local.set $0 - loop $for-loop|1 - local.get $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + local.set $1 + loop $for-loop|0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if - local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#__get - i32.const 6912 - local.get $1 - i32.const 1 - i32.sub local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 24 + local.get $2 + i32.const 2 i32.shl - i32.const 24 - i32.shr_s - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.add + local.get $2 + local.get $3 + i32.add + i32.load8_u + i32.store + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|1 + local.set $2 + br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - local.get $3 + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=16 + i32.add local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 - i32.ne + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 10572 + i32.load + i32.const 7 + i32.add local.get $0 + i32.load offset=8 i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 - i32.ne + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 555 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.load offset=4 + i32.const 28 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 + local.set $0 + i32.const 10564 i32.load - local.tee $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store offset=8 + local.set $2 + i32.const 10572 + i32.load + local.set $3 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if - local.get $2 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $3 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_s + i32.store + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $2 - call $~lib/typedarray/Uint8Array#reverse - drop - i32.const 0 + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 10316 + i32.load + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 local.set $0 - loop $for-loop|1 - local.get $0 + i32.const 10308 + i32.load + local.set $2 + i32.const 10316 + i32.load + local.set $3 + loop $for-loop|0 local.get $1 + local.get $3 i32.lt_s if - local.get $2 local.get $0 - call $~lib/typedarray/Uint8Array#__get - i32.const 6912 local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i64.load32_s + i64.store + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|1 + local.set $1 + br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint8Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 6 + i32.add local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + i32.const 48 + i32.add + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + call $~lib/memory/memory.copy + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 555 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.set $0 local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - i32.store offset=8 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + local.set $1 loop $for-loop|0 - local.get $0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if - local.get $2 local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 3 + i32.shl + i32.add + local.get $2 local.get $3 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + i32.add + i64.load8_u + i64.store + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end - local.get $2 - call $~lib/typedarray/Uint8Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6912 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 - 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 - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint8Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shr_u + i32.const 4 + i32.add local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 555 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $0 + i32.load offset=4 + i32.const 32 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.set $0 local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 loop $for-loop|0 - local.get $0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if - local.get $2 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $3 - local.get $0 - i32.const 6912 local.get $0 - call $~lib/array/Array#__get - i32.const 16 + local.get $2 + i32.const 3 i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int16Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if + local.get $3 local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.const 6912 - local.get $1 i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 16 i32.shl - i32.const 16 - i32.shr_s - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.add + i64.load16_s + i64.store + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|1 + local.set $2 + br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 10572 + i32.load i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne + i32.shr_u + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 555 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $0 + i32.load offset=4 + i32.const 56 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 + local.set $0 + i32.const 10564 i32.load - local.tee $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - i32.store offset=8 + local.set $2 + i32.const 10572 + i32.load + local.set $3 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if - local.get $2 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $3 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.add + i64.load8_s + i64.store + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $2 - call $~lib/typedarray/Uint16Array#reverse - drop + ) + (func $~lib/util/sort/weakHeapSort (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.get $1 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $5 i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 + i32.const 0 + i32.gt_s if - local.get $2 + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end local.get $0 - call $~lib/typedarray/Uint16Array#__get - i32.const 6912 - local.get $1 + local.get $3 i32.const 1 - i32.sub + i32.shr_s + local.tee $7 + i32.add + i32.load8_s + local.set $3 local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne + local.get $4 + i32.add + i32.load8_s + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 547 + local.get $5 + local.get $4 i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.add + local.get $3 + i32.store8 + local.get $0 + local.get $7 + i32.add + local.get $6 + i32.store8 end - local.get $0 + local.get $4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.sub + local.set $4 + br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint16Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $1 i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 555 - 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 $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s if - local.get $2 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $3 local.get $0 - i32.const 6912 + i32.load8_s + local.set $1 local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set local.get $0 - i32.const 1 + local.get $4 i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.const 6912 + local.tee $3 + i32.load8_s + i32.store8 + local.get $3 local.get $1 + i32.store8 i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $5 + local.get $1 i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end end - local.get $0 + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load8_s + local.set $3 + local.get $0 + local.get $1 + i32.add + i32.load8_s + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + i32.store8 + local.get $0 + local.get $6 + i32.store8 + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.sub + local.set $4 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.store offset=16 + local.get $5 + call $~lib/rt/tlsf/__free local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load8_s offset=1 + local.set $1 local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load8_s + i32.store8 offset=1 local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 555 - 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 + local.get $1 + i32.store8 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - i32.store offset=8 - loop $for-loop|0 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 - local.get $1 - i32.lt_s + local.tee $4 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.le_s + br_if $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $4 + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq if - local.get $2 local.get $0 - i32.const 6912 + i32.load8_s offset=1 + local.set $3 local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set + i32.load8_s + local.set $2 + i32.const 2 + global.set $~argumentsLength local.get $3 - local.get $0 - i32.const 6912 - 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|0 + local.get $2 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $2 + i32.store8 offset=1 + local.get $0 + local.get $3 + i32.store8 + end + br $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 end - end - local.get $2 - call $~lib/typedarray/Uint32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 + local.get $2 + local.tee $3 + i32.const 256 i32.lt_s if - local.get $2 local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.const 6912 + local.set $2 local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $5 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_s + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $0 + local.get $2 + i32.add + i32.load8_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.add + local.get $8 + i32.store8 + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.add + local.get $7 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end end + else local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.store offset=12 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.tee $1 local.get $0 - call $~lib/typedarray/Uint32Array#reverse + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.gt_s local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get + local.get $1 + i32.gt_s + i32.sub + ) + (func $~lib/util/sort/weakHeapSort (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.get $1 + i32.const 31 + i32.add i32.const 5 - i32.ne + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 555 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - i32.const 20 + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.tee $5 i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + call $~lib/memory/memory.fill local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store offset=8 + i32.const 1 + i32.sub + local.set $4 loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s + local.get $4 + i32.const 0 + i32.gt_s if - local.get $2 - local.get $0 - i32.const 6912 + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set local.get $3 - local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 i32.const 1 + i32.shr_s + local.tee $7 i32.add - local.set $0 + i32.load8_u + local.set $3 + local.get $0 + local.get $4 + i32.add + i32.load8_u + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.add + local.get $3 + i32.store8 + local.get $0 + local.get $7 + i32.add + local.get $6 + i32.store8 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 br $for-loop|0 end end - local.get $2 - call $~lib/typedarray/Int64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s if - local.get $2 local.get $0 - call $~lib/typedarray/Int64Array#__get - i32.const 6912 + i32.load8_u + local.set $1 + local.get $0 + local.get $0 + local.get $4 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $3 local.get $1 + i32.store8 i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $5 + local.get $1 i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end end - local.get $0 + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load8_u + local.set $3 + local.get $0 + local.get $1 + i32.add + i32.load8_u + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + i32.store8 + local.get $0 + local.get $6 + i32.store8 + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.sub + local.set $4 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.store offset=16 + local.get $5 + call $~lib/rt/tlsf/__free local.get $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load8_u offset=1 + local.set $1 local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load8_u + i32.store8 offset=1 local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 555 - 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 + local.get $1 + i32.store8 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - i32.store offset=8 - loop $for-loop|0 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $0 - local.get $1 - i32.lt_s + local.tee $4 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.le_s + br_if $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $4 + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq if - local.get $2 local.get $0 - i32.const 6912 + i32.load8_u offset=1 + local.set $3 local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + i32.load8_u + local.set $2 + i32.const 2 + global.set $~argumentsLength local.get $3 - local.get $0 - i32.const 6912 - 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|0 - end - end - local.get $2 - call $~lib/typedarray/Uint64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if local.get $2 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i32.const 6912 local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 547 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.store8 offset=1 + local.get $0 + local.get $3 + i32.store8 end + br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $2 + local.tee $3 + i32.const 256 + i32.lt_s + if local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + local.set $2 + local.get $1 + local.set $5 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_u + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.add + local.get $8 + i32.store8 + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.add + local.get $7 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + else + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 + local.get $4 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/typedarray/Uint64Array#reverse + i32.const 255 + i32.and local.tee $0 - i32.store offset=16 + local.get $1 + i32.const 255 + i32.and + local.tee $1 + i32.gt_u local.get $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.lt_u + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 255 + i32.and + local.tee $1 local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 255 + i32.and + local.tee $0 + i32.gt_u local.get $0 + local.get $1 + i32.gt_u + i32.sub + ) + (func $~lib/util/sort/weakHeapSort (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.get $1 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 555 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - i32.const 20 + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.tee $5 i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + call $~lib/memory/memory.fill local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.store offset=8 + i32.const 1 + i32.sub + local.set $4 loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s + local.get $4 + i32.const 0 + i32.gt_s if - local.get $2 - local.get $0 - i32.const 6912 + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set local.get $3 + i32.const 1 + i32.shr_s + local.tee $7 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $3 local.get $0 - i32.const 6912 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $4 i32.const 1 + i32.shl i32.add - local.set $0 + i32.load16_s + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.store16 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 br $for-loop|0 end end - local.get $2 - call $~lib/typedarray/Float32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s if - local.get $2 local.get $0 - call $~lib/typedarray/Float32Array#__get - i32.const 6912 + i32.load16_s + local.set $1 + local.get $0 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + i32.store16 + local.get $3 local.get $1 + i32.store16 i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $5 + local.get $1 i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end end - local.get $0 + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load16_s + local.set $3 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 + local.get $0 + local.get $6 + i32.store16 + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.sub + local.set $4 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/rt/tlsf/__free local.get $0 - i32.store offset=12 + i32.load16_s offset=2 + local.set $1 local.get $0 - call $~lib/typedarray/Float32Array#reverse - local.tee $0 - i32.store offset=16 local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load16_s + i32.store16 offset=2 local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 555 - 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 + local.get $1 + i32.store16 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 6912 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6924 - i32.load - local.tee $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - i32.store offset=8 - loop $for-loop|0 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 - local.get $1 - i32.lt_s + local.tee $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $4 + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq if - local.get $2 local.get $0 - i32.const 6912 + i32.load16_s offset=2 + local.set $3 local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set + i32.load16_s + local.set $2 + i32.const 2 + global.set $~argumentsLength local.get $3 - local.get $0 - i32.const 6912 - 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 + local.get $2 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $2 + i32.store16 offset=2 + local.get $0 + local.get $3 + i32.store16 + end + br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 end - end - local.get $2 - call $~lib/typedarray/Float64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 + local.get $2 + local.tee $3 + i32.const 256 i32.lt_s if - local.get $2 local.get $0 - call $~lib/typedarray/Float64Array#__get - i32.const 6912 + local.set $2 local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 547 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $5 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $2 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end end + else local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort end end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Float64Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 552 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 553 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 554 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 555 - 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 + local.get $4 ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 16 + i32.shl i32.const 16 + i32.shr_s + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - 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 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $1 local.get $0 - i32.load offset=4 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $0 + i32.gt_s local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 local.get $1 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.gt_s i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 + ) + (func $~lib/util/sort/weakHeapSort (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.get $1 + i32.const 31 i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 - local.get $0 - i32.const 7456 - call $~lib/string/String.__eq + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $5 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 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 + local.get $3 + call $~lib/memory/memory.fill local.get $1 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Uint8Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 - local.get $0 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.gt_s + if + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $3 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.store16 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 + local.get $1 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.sub + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s + if + local.get $0 + i32.load16_u + local.set $1 + local.get $0 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + i32.store16 + local.get $3 + local.get $1 + i32.store16 + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load16_u + local.set $3 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 + local.get $0 + local.get $6 + i32.store16 + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|2 + end + end + local.get $5 + call $~lib/rt/tlsf/__free local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.load16_u offset=2 + local.set $1 local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.load16_u + i32.store16 offset=2 local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 + local.get $1 + i32.store16 + ) + (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $0 + local.tee $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $4 + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq + if + local.get $0 + i32.load16_u offset=2 + local.set $3 + local.get $0 + i32.load16_u + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $2 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $2 + i32.store16 offset=2 + local.get $0 + local.get $3 + i32.store16 + end + br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $2 + local.tee $3 + i32.const 256 + i32.lt_s + if + local.get $0 + local.set $2 + local.get $1 + local.set $5 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $2 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + else + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort + end + end + local.get $4 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load offset=4 + i32.const 65535 + i32.and + local.tee $0 + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + i32.gt_u local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 + i32.lt_u + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Uint8Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.const 65535 + i32.and + local.tee $1 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 + i32.const 65535 + i32.and + local.tee $0 + i32.gt_u local.get $0 - i32.const 7456 - call $~lib/string/String.__eq + local.get $1 + i32.gt_u + i32.sub + ) + (func $~lib/util/sort/weakHeapSort (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.get $1 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - i32.const 16 + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $5 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 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int16Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 + local.get $3 + call $~lib/memory/memory.fill local.get $1 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.gt_s + if + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s + if + local.get $0 + i32.load + local.set $1 + local.get $0 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $3 + local.get $1 + i32.store + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.set $3 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $0 + local.get $6 + i32.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|2 + end + end + local.get $5 + call $~lib/rt/tlsf/__free + local.get $0 + i32.load offset=4 + local.set $1 local.get $0 - 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.get $0 + i32.load i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 local.get $0 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.store + ) + (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $0 + local.tee $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $4 + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq + if + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $2 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $2 + local.tee $3 + i32.const 256 + i32.lt_s + if + local.get $0 + local.set $2 + local.get $1 + local.set $5 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + else + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort + end end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - 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 + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 + local.get $1 + i32.lt_s local.get $0 - call $~lib/typedarray/Uint16Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 + i32.gt_s + i32.sub + ) + (func $~lib/util/sort/weakHeapSort (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.get $1 - i32.const 7456 - call $~lib/string/String.__eq + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store - local.get $0 - call $~lib/typedarray/Uint16Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 - local.get $0 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.gt_s + if + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 + local.get $1 i32.const 1 - call $~lib/typedarray/Int32Array#__set + i32.sub + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s + if + local.get $0 + i32.load + local.set $1 + local.get $0 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $3 + local.get $1 + i32.store + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.set $3 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $0 + local.get $6 + i32.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|2 + end + end + local.get $5 + call $~lib/rt/tlsf/__free local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set + i32.load offset=4 + local.set $1 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 + i32.load + i32.store offset=4 local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 + local.get $1 + i32.store + ) + (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $0 + local.tee $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $4 + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq + if + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $2 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $2 + local.tee $3 + i32.const 256 + i32.lt_s + if + local.get $0 + local.set $2 + local.get $1 + local.set $5 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + else + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort + end + end + local.get $4 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/typedarray/Int32Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 + i32.gt_u + local.get $0 local.get $1 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.lt_u i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store - local.get $0 - 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 + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 + local.get $1 + i32.lt_u local.get $0 - i32.const 7456 - call $~lib/string/String.__eq + local.get $1 + i32.gt_u + i32.sub + ) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + (local $8 i32) + local.get $1 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - i32.const 16 + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $6 i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 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 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint32Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 - local.get $1 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.gt_s + if + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $6 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s + if + local.get $0 + i64.load + local.set $5 + local.get $0 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load + i64.store + local.get $1 + local.get $5 + i64.store + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i64.load + local.set $5 + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store + local.get $0 + local.get $7 + i64.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|2 + end + end + local.get $6 + call $~lib/rt/tlsf/__free local.get $0 - 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 + i64.load offset=8 + local.set $5 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 local.get $0 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 + i64.load i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - 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 $5 + i64.store + ) + (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $0 + local.tee $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $3 + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq + if + local.get $0 + i64.load offset=8 + local.set $6 + local.get $0 + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + local.get $1 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $7 + i64.store offset=8 + local.get $0 + local.get $6 + i64.store + end + br $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $2 + local.tee $4 + i32.const 256 + i32.lt_s + if + local.get $0 + local.set $2 + local.get $1 + local.set $5 + loop $for-loop|0 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $2 + local.get $8 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $6 + local.get $8 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + local.get $5 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + else + local.get $0 + local.get $4 + local.get $1 + call $~lib/util/sort/weakHeapSort + end + end + local.get $3 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set + local.get $1 + i64.gt_s local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set + local.get $1 + i64.lt_s + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 + local.get $1 + i64.lt_s local.get $0 - call $~lib/typedarray/Int64Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 + i64.gt_s + i32.sub + ) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + (local $8 i32) local.get $1 - i32.const 7456 - call $~lib/string/String.__eq + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 - local.get $0 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - 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 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Uint64Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 - local.get $1 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 652 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store - local.get $0 - 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.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=8 - local.get $0 - i32.const 7456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 653 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $6 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 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Float32Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8640 - i32.store offset=8 + local.get $3 + call $~lib/memory/memory.fill local.get $1 - i32.const 8640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 649 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store - local.get $0 - 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.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8640 - i32.store offset=8 - local.get $0 - i32.const 8640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 650 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5 - 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 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Float64Array#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8640 - i32.store offset=8 - local.get $1 - i32.const 8640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 649 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store - local.get $0 - 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.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8640 - i32.store offset=8 - local.get $0 - i32.const 8640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 650 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.store offset=4 + local.set $4 loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s + local.get $4 + i32.const 0 + i32.gt_s if - local.get $1 - local.get $0 - i32.const 8768 - local.get $0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $6 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end local.get $0 + local.get $3 i32.const 1 + i32.shr_s + local.tee $3 + i32.const 3 + i32.shl i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - 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 $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 + i64.load + local.set $5 local.get $0 - call $~lib/typedarray/Int8Array#__get + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#__get - i32.ne + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 707 + local.get $6 + local.get $4 i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store end - local.get $0 + local.get $4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.sub + local.set $4 + br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $1 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store offset=4 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s if - local.get $1 local.get $0 - i32.const 8768 + i64.load + local.set $5 local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set local.get $0 - i32.const 1 + local.get $4 + i32.const 3 + i32.shl i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if + local.tee $1 + i64.load + i64.store local.get $1 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 707 + local.get $5 + i64.store + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $6 + local.get $1 i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end end - local.get $0 + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i64.load + local.set $5 + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store + local.get $0 + local.get $7 + i64.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.sub + local.set $4 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $6 + call $~lib/rt/tlsf/__free + local.get $0 + i64.load offset=8 + local.set $5 + local.get $0 + local.get $0 + i64.load + i64.store offset=8 + local.get $0 + local.get $5 + i64.store ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store offset=4 - loop $for-loop|0 + (local $6 i64) + (local $7 i64) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $0 + local.tee $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $3 - i32.lt_s + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq if - local.get $1 local.get $0 - i32.const 8768 + i64.load offset=8 + local.set $6 local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + local.get $1 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $7 + i64.store offset=8 + local.get $0 + local.get $6 + i64.store + end + br $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $2 + local.tee $4 + i32.const 256 + i32.lt_s + if local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + local.set $2 + local.get $1 + local.set $5 + loop $for-loop|0 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $2 + local.get $8 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $6 + local.get $8 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + local.get $5 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + else + local.get $0 + local.get $4 + local.get $1 + call $~lib/util/sort/weakHeapSort end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 local.get $1 - i32.load offset=4 + i64.gt_u + local.get $0 local.get $1 - i32.load + i64.lt_u i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $0 local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 + i64.lt_u + local.get $0 local.get $1 - i32.load + i64.gt_u i32.sub + ) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + (local $8 i32) + local.get $1 + i32.const 31 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.const 5 - 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.shr_u + i32.const 2 + i32.shl + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + local.tee $6 i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 + i32.const 0 + i32.gt_s if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 707 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $6 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end end local.get $0 + local.get $3 i32.const 1 + i32.shr_s + local.tee $3 + i32.const 2 + i32.shl 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 - ) - (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) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $3 - call $~lib/typedarray/Int16Array#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 8768 + f32.load + local.set $5 local.get $0 - call $~lib/array/Array#__get - i32.const 16 + local.get $4 + i32.const 2 i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 i32.add - local.set $0 + f32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 $2 - local.set $5 - local.get $2 - 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 - global.set $~lib/memory/__stack_pointer - 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 + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s if - local.get $1 local.get $0 - call $~lib/typedarray/Int16Array#__get - local.get $2 + f32.load + local.set $5 local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 707 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load + f32.store + local.get $1 + local.get $5 + f32.store + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $6 + local.get $1 i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end end - local.get $0 + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + f32.load + local.set $5 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store + local.get $0 + local.get $7 + f32.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.sub + local.set $4 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $6 + call $~lib/rt/tlsf/__free + local.get $0 + f32.load offset=4 + local.set $5 + local.get $0 + local.get $0 + f32.load + f32.store offset=4 + local.get $0 + local.get $5 + f32.store ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.store offset=4 - loop $for-loop|0 + (local $6 f32) + (local $7 f32) + (local $8 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $0 + local.tee $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $3 - i32.lt_s + i32.load offset=4 + local.set $0 + local.get $2 + i32.const 2 + i32.eq if - local.get $1 local.get $0 - i32.const 8768 + f32.load offset=4 + local.set $6 local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + f32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + local.get $1 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $7 + f32.store offset=4 + local.get $0 + local.get $6 + f32.store + end + br $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $2 + local.tee $4 + i32.const 256 + i32.lt_s + if local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + local.set $2 + local.get $1 + local.set $5 + loop $for-loop|0 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $2 + local.get $8 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $6 + local.get $8 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|1 + local.get $0 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + local.get $5 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + br $while-continue|1 + end + end + end + local.get $2 + local.get $0 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + else + local.get $0 + local.get $4 + local.get $1 + call $~lib/util/sort/weakHeapSort end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 + i32.reinterpret_f32 + local.tee $2 + local.get $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.tee $2 local.get $1 - i32.load offset=4 - local.get $1 - i32.load + i32.reinterpret_f32 + local.tee $3 + local.get $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + local.get $0 local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 + f32.lt + local.get $0 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 + f32.gt i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (result i32) local.get $0 - i32.const 20 + local.get $1 + f64.lt + local.get $0 + local.get $1 + f64.gt i32.sub - i32.load offset=16 - local.tee $2 - local.set $5 - local.get $2 - 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 $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 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $invalid + 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 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $invalid + end + return + end + return + end unreachable end local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:std/typedarray ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (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.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store offset=4 - loop $for-loop|0 - local.get $0 - local.get $3 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8768 - 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|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 $2 - local.set $5 - local.get $2 - 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 - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 + 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 6 + 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 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 3952 + i32.store offset=4 + local.get $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + local.set $5 + local.get $1 + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $8 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 707 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $8 + i32.add + i32.load8_s + local.set $7 + i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $2 + i32.const 3952 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $0 + local.get $6 + i32.add + local.get $7 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 end + local.get $1 + local.get $6 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + 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 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 20 - 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/testArrayWrap<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (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.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8768 - 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|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 $2 - local.set $5 - local.get $2 - 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 9 - 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 $2 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 + 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 6 + 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 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 3984 + i32.store offset=4 + local.get $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + local.set $5 + local.get $1 + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $8 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 707 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $8 + i32.add + i32.load8_u + local.set $7 + i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $2 + i32.const 3984 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $0 + local.get $6 + i32.add + local.get $7 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 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 - ) - (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 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=4 - loop $for-loop|0 + local.get $1 + local.get $6 local.get $0 - local.get $3 - i32.lt_s + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.ne if - local.get $1 - local.get $0 - i32.const 8768 - 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 + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 $2 - local.set $5 - local.get $2 - 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 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 $2 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne if - local.get $1 - local.get $0 - call $~lib/typedarray/Int64Array#__get - local.get $2 - 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 + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store offset=4 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne if - local.get $1 - local.get $0 - i32.const 8768 - 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|0 + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 $2 - local.set $5 - local.get $2 - 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 - global.set $~lib/memory/__stack_pointer - 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 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - local.get $2 - local.get $0 - 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 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 20 - 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/testArrayWrap<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (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.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8768 - 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.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 $2 - local.set $5 - local.get $2 - 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 $2 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 + 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 6 + 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 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4016 + i32.store offset=4 + local.get $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 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 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + local.set $5 + local.get $1 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $8 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 707 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $8 + i32.add + i32.load8_u + local.set $7 + i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $2 + i32.const 4016 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $0 + local.get $6 + i32.add + local.get $7 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 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 - ) - (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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8768 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8780 - i32.load - local.tee $3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=4 - loop $for-loop|0 + local.get $1 + local.get $6 local.get $0 - local.get $3 - i32.lt_s + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.ne if - local.get $1 - local.get $0 - i32.const 8768 - 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 + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 $2 - local.set $5 - local.get $2 - 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 - 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 $2 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne 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 + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - 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 - call $~stack_check - 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 + local.get $1 i32.const 0 - i32.const 1568 - i32.const 735 + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s + i32.ne 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 9184 - i32.store - i32.const 9184 - 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 + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + 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 - 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/Int8Array> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) @@ -29101,372 +33371,465 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - 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 8848 - 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 9152 - 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 8928 - i32.store offset=16 - i32.const 0 - local.set $0 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 - i32.load offset=8 - i32.const 8940 - i32.load + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 6 + 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 - i32.add + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4048 + i32.store offset=4 + local.get $4 + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $5 local.get $1 + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 i32.load offset=4 - i32.const 3 - i32.add - local.set $5 - i32.const 8932 - i32.load - local.set $6 - i32.const 8940 - i32.load - local.set $9 + local.set $8 loop $for-loop|0 - local.get $0 - local.get $9 + local.get $3 + local.get $5 i32.lt_s if - local.get $0 - local.get $5 - i32.add - local.get $6 - local.get $0 - i32.const 2 + local.get $8 + local.get $3 + i32.const 1 i32.shl i32.add - f32.load - local.tee $7 + i32.load16_s + local.set $7 + i32.const 3 + global.set $~argumentsLength local.get $7 - f32.sub - f32.const 0 - f32.eq - if (result i32) + local.get $3 + local.get $2 + i32.const 4048 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $0 + i32.const 1 + i32.shl + i32.add local.get $7 - i32.trunc_f32_s - else - i32.const 0 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 end - i32.store8 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|0 end end - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9232 - 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 $6 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + i32.const 1 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link 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 9264 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + i32.store offset=8 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 9024 - i32.store offset=16 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=8 - i32.const 9036 - i32.load - i32.const 2 + i32.const 8 i32.add - i32.lt_s - br_if $folding-inner0 + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 local.get $1 i32.load offset=4 - i32.const 2 - i32.add - local.set $3 - i32.const 9028 - i32.load - local.set $5 - i32.const 9036 + local.get $1 i32.load - local.set $6 - loop $for-loop|00 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $3 - i32.add - local.get $5 - 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 - i32.const 0 - end - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9296 - 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 9104 - i32.store offset=16 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 i32.const 0 - i32.const 15 - i32.const 9328 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 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/testArrayFilter<~lib/typedarray/Uint16Array,u16> + (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 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - 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 i32.const 0 - i32.const 1568 - i32.const 735 + i32.store offset=8 + local.get $1 + i32.const 6 + 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/builtins/abort - unreachable - end - loop $for-loop|0 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4080 + i32.store offset=4 local.get $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $3 - local.set $5 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $5 + local.get $1 + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $8 + loop $for-loop|0 local.get $3 - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $3 - i32.ne + local.get $5 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 9392 - i32.store - i32.const 9392 + local.get $8 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $7 i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $3 local.get $2 - f64.convert_i32_s + i32.const 4080 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end local.get $3 - 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 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 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 + local.get $1 + local.get $6 + local.get $0 + i32.const 1 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + 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/testTypedArraySet<~lib/typedarray/Uint8Array> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -29474,372 +33837,465 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - 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 8848 - 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 9360 - 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 8928 - i32.store offset=16 - i32.const 0 - local.set $0 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 - i32.load offset=8 - i32.const 8940 - i32.load + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 6 + 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 - i32.add + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4112 + i32.store offset=4 + local.get $4 + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $5 local.get $1 + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 i32.load offset=4 - i32.const 3 - i32.add - local.set $5 - i32.const 8932 - i32.load - local.set $6 - i32.const 8940 - i32.load - local.set $9 + local.set $8 loop $for-loop|0 - local.get $0 - local.get $9 + local.get $3 + local.get $5 i32.lt_s if - local.get $0 - local.get $5 - i32.add - local.get $6 - local.get $0 + local.get $8 + local.get $3 i32.const 2 i32.shl i32.add - f32.load - local.tee $7 + i32.load + local.set $7 + i32.const 3 + global.set $~argumentsLength local.get $7 - f32.sub - f32.const 0 - f32.eq - if (result i32) + local.get $3 + local.get $2 + i32.const 4112 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add local.get $7 - i32.trunc_f32_u - else - i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - i32.store8 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|0 end end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9440 - 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 $6 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link 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 9472 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + i32.store offset=8 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 9024 - i32.store offset=16 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=8 - i32.const 9036 - i32.load - i32.const 2 + i32.const 8 i32.add - i32.lt_s - br_if $folding-inner0 + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 local.get $1 i32.load offset=4 - i32.const 2 - i32.add - local.set $3 - i32.const 9028 - i32.load - local.set $5 - i32.const 9036 + local.get $1 i32.load - local.set $6 - loop $for-loop|00 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $3 - i32.add - local.get $5 - 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 - i32.const 0 - end - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9504 - 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 9104 - i32.store offset=16 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 i32.const 0 - i32.const 63 - i32.const 9536 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 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/testArrayFilter<~lib/typedarray/Uint32Array,u32> + (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 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - 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 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=8 + local.get $1 + i32.const 6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + i32.store local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $3 - local.set $5 + 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 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4144 + i32.store offset=4 + local.get $4 + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $5 + local.get $1 + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $8 + loop $for-loop|0 local.get $3 - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $3 - i32.ne + local.get $5 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 9600 - i32.store - i32.const 9600 + local.get $8 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $3 local.get $2 - f64.convert_i32_s + i32.const 4144 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end local.get $3 - 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 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end + local.get $1 + local.get $6 + local.get $0 + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + 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 - 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/Uint8ClampedArray> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (local $0 i32) (local $1 i32) (local $2 i32) @@ -29847,489 +34303,232 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 i64) (local $8 i32) - (local $9 f32) - (local $10 f64) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - 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/Uint8ClampedArray#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8848 - i32.store offset=16 block $folding-inner0 - i32.const 8860 - i32.load - local.get $1 - i32.load offset=8 - i32.gt_s + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s br_if $folding-inner0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 8852 - i32.load - local.set $7 - i32.const 8860 - i32.load - local.set $8 - loop $for-loop|0 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $0 - local.get $6 - i32.add - local.get $7 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9568 - call $~lib/rt/__newArray - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + local.tee $1 + i64.const 0 + i64.store local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - i32.const 8928 - i32.store offset=16 i32.const 0 - local.set $0 + i32.store offset=8 local.get $1 - i32.load offset=8 - i32.const 8940 - i32.load + i32.const 6 + 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 - i32.add + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4176 + i32.store offset=4 + local.get $4 + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $5 local.get $1 - i32.load offset=4 + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 3 - i32.add - local.set $6 - i32.const 8932 - i32.load - local.set $7 - i32.const 8940 - i32.load + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 local.set $8 - loop $for-loop|00 - local.get $0 - local.get $8 + loop $for-loop|0 + local.get $3 + local.get $5 i32.lt_s if - local.get $0 - local.get $6 - i32.add - local.get $7 - local.get $0 - i32.const 2 + local.get $8 + local.get $3 + i32.const 3 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 + i64.load + local.set $7 + i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $2 + i32.const 4176 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - i32.store8 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $3 + br $for-loop|0 end end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9664 - 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 $6 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 3 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link local.get $1 local.get $3 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9696 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + i32.store offset=8 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 9024 - i32.store offset=16 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=8 - i32.const 9036 - i32.load - i32.const 2 + i32.const 8 i32.add - i32.lt_s - br_if $folding-inner0 + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 local.get $1 i32.load offset=4 - i32.const 2 - i32.add - local.set $5 - i32.const 9028 + local.get $1 i32.load - local.set $6 - i32.const 9036 - i32.load - local.set $7 - loop $for-loop|01 - local.get $0 - local.get $7 - i32.lt_s - if - local.get $0 - local.get $5 - i32.add - local.get $6 - local.get $0 - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9728 - 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/Uint8ClampedArray> - local.get $2 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.gt_s - br_if $folding-inner0 local.get $1 - i32.load offset=4 - local.get $2 - i32.load offset=4 - local.get $2 i32.load offset=8 - call $~lib/memory/memory.copy + i32.const 3 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $4 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 9104 - i32.store offset=16 i32.const 0 - local.set $2 - local.get $1 - i32.load offset=8 - i32.const 9116 - i32.load - i32.const 7 - i32.add - i32.lt_s - br_if $folding-inner0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.load offset=4 - i32.const 7 - i32.add - local.set $3 - i32.const 9108 - i32.load - local.set $4 - i32.const 9116 - i32.load - local.set $5 - loop $for-loop|02 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.get $2 - local.get $4 - i32.add - i32.load8_s - local.tee $0 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $0 - i32.const 255 - local.get $0 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|02 - end + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9760 - 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/Uint8ClampedArray> + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 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) - (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 - call $~stack_check - 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 $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 $0 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.tee $5 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 9840 - i32.store - i32.const 9840 - 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/Int16Array> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (local $0 i32) (local $1 i32) (local $2 i32) @@ -30337,376 +34536,232 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) + (local $7 i64) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - 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 8848 - 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 9792 - 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 8928 - i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 - i32.const 8940 - 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=8 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 6 + 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 - i32.shr_u - i32.gt_s + 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 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4208 + i32.store offset=4 + local.get $4 + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $5 local.get $1 + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 i32.load offset=4 - i32.const 6 - i32.add - local.set $5 - i32.const 8932 - i32.load - local.set $6 - i32.const 8940 - i32.load - local.set $9 + local.set $8 loop $for-loop|0 - local.get $0 - local.get $9 + local.get $3 + local.get $5 i32.lt_s if - local.get $5 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $0 - i32.const 2 + local.get $8 + local.get $3 + i32.const 3 i32.shl i32.add - f32.load - local.tee $7 + i64.load + local.set $7 + i32.const 3 + global.set $~argumentsLength local.get $7 - f32.sub - f32.const 0 - f32.eq - if (result i32) + local.get $3 + local.get $2 + i32.const 4208 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add local.get $7 - i32.trunc_f32_s - else - i32.const 0 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - i32.store16 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|0 end end - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9888 - 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 $6 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + i32.const 3 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link 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 9936 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + i32.store offset=8 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 9024 - i32.store offset=16 - i32.const 0 - local.set $0 - i32.const 9036 - i32.load - i32.const 2 + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - br_if $folding-inner0 + i32.store offset=8 local.get $1 i32.load offset=4 - i32.const 4 - i32.add - local.set $3 - i32.const 9028 - i32.load - local.set $5 - i32.const 9036 + local.get $1 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 1 - i32.shl - i32.add - local.get $5 - 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 - i32.const 0 - end - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9984 - 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> local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $4 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 9104 - i32.store offset=16 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 i32.const 1 - i32.const 64 - i32.const 10032 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 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) - (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 - call $~stack_check - 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 $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 $0 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.tee $5 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 10128 - i32.store - i32.const 10128 - 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/Uint16Array> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -30715,375 +34770,231 @@ (local $5 i32) (local $6 i32) (local $7 f32) - (local $8 f64) - (local $9 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - 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/Uint16Array#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8848 - i32.store offset=16 - local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10080 - 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/Uint16Array> - global.get $~lib/memory/__stack_pointer - i32.const 8928 - i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 - i32.const 8940 - 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=8 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 6 + 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 - i32.shr_u - i32.gt_s + 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 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4240 + i32.store offset=4 + local.get $4 + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $5 local.get $1 + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 i32.load offset=4 - i32.const 6 - i32.add - local.set $5 - i32.const 8932 - i32.load - local.set $6 - i32.const 8940 - i32.load - local.set $9 + local.set $8 loop $for-loop|0 - local.get $0 - local.get $9 + local.get $3 + local.get $5 i32.lt_s if - local.get $5 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $0 + local.get $8 + local.get $3 i32.const 2 i32.shl i32.add f32.load - local.tee $7 + local.set $7 + i32.const 3 + global.set $~argumentsLength local.get $7 - f32.sub - f32.const 0 - f32.eq - if (result i32) + local.get $3 + local.get $2 + i32.const 4240 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_i32) + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add local.get $7 - i32.trunc_f32_u - else - i32.const 0 + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - i32.store16 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|0 end end - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10176 - 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 $6 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link local.get $1 local.get $3 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10224 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + i32.store offset=8 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 9024 - i32.store offset=16 - i32.const 0 - local.set $0 - i32.const 9036 - i32.load - i32.const 2 + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - br_if $folding-inner0 + i32.store offset=8 local.get $1 i32.load offset=4 - i32.const 4 - i32.add - local.set $3 - i32.const 9028 - i32.load - local.set $5 - i32.const 9036 + local.get $1 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 1 - i32.shl - i32.add - local.get $5 - 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 - i32.const 0 - end - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10272 - 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/Uint16Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> local.get $1 - local.get $4 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 9104 - i32.store offset=16 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 i32.const 1 - i32.const 65 - i32.const 10320 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 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/Int32Array> (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 - call $~stack_check - 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 $0 - local.get $2 - call $~lib/typedarray/Int32Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#__uget - local.tee $5 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 10432 - i32.store - i32.const 10432 - 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/Int32Array> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (local $0 i32) (local $1 i32) (local $2 i32) @@ -31091,1129 +35002,651 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 f64) - (local $10 i32) + (local $7 f64) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - 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 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - 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/Int32Array#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8848 - i32.store offset=16 - local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10368 - 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/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 8928 - i32.store offset=16 - i32.const 0 - local.set $2 block $folding-inner0 - i32.const 8940 - 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=8 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 6 + 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 - i32.shr_u - i32.gt_s + 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 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4272 + i32.store offset=4 + local.get $4 + 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-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $5 local.get $1 - i32.load offset=4 i32.const 12 - i32.add - local.set $5 - i32.const 8932 - i32.load - local.set $6 - i32.const 8940 - i32.load - local.set $10 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $8 loop $for-loop|0 - local.get $2 - local.get $10 + local.get $3 + local.get $5 i32.lt_s if - local.get $5 - local.get $2 - i32.const 2 + local.get $8 + local.get $3 + i32.const 3 i32.shl - local.tee $7 i32.add - local.get $6 + f64.load + local.set $7 + i32.const 3 + global.set $~argumentsLength local.get $7 - i32.add - 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 $3 local.get $2 + i32.const 4272 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_i32) + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10480 - 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 $6 + local.get $0 + i32.const 3 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store local.get $1 local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + call $~lib/rt/itcms/__link local.get $1 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10544 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + local.get $3 + i32.store offset=8 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 9024 - i32.store offset=16 - i32.const 0 - local.set $0 - i32.const 9036 - i32.load - i32.const 2 + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 + i32.store offset=8 local.get $1 i32.load offset=4 - i32.const 8 - i32.add - local.set $7 - i32.const 9028 - i32.load - local.set $5 - i32.const 9036 + local.get $1 i32.load - local.set $6 - loop $for-loop|00 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 10 - i32.const 2 - i32.const 16 - 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/Int32Array> + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $3 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - local.get $4 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 9104 - i32.store offset=16 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 i32.const 2 - i32.const 16 - i32.const 10672 - call $~lib/rt/__newArray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $1 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 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/Uint32Array> (param $0 i32) (param $1 i32) - (local $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $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 - call $~stack_check 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 + 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 + i32.const 0 + i32.store + local.get $3 + i32.const 6448 + i32.store + local.get $0 + i32.const 255 + i32.and + i32.const 6448 local.get $1 - i32.load offset=12 + call $~lib/array/Array#__get + i32.const 255 + i32.and i32.ne if i32.const 0 i32.const 1568 - i32.const 735 - i32.const 3 + i32.const 513 + i32.const 5 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Uint32Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#__uget - local.tee $5 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 10800 - i32.store - i32.const 10800 - 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 + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (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 f32) - (local $9 f64) - (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set + 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 4 - call $~lib/typedarray/Uint8Array#constructor local.tee $3 - i32.store offset=4 - local.get $3 i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set + i32.store local.get $3 - 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/Uint32Array#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8848 - i32.store offset=16 + i32.const 6448 + i32.store + local.get $0 + i32.const 65535 + i32.and + i32.const 6448 local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10736 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 8928 - i32.store offset=16 - i32.const 0 - local.set $2 - block $folding-inner0 - i32.const 8940 - i32.load - i32.const 3 - i32.add - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 12 - i32.add - local.set $5 - i32.const 8932 - i32.load - local.set $6 - i32.const 8940 - i32.load - local.set $10 - loop $for-loop|0 - local.get $2 - local.get $10 - i32.lt_s - if - local.get $5 - local.get $2 - 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 - 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 $2 - br $for-loop|0 - end - end - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10848 - 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/Uint32Array> - local.get $1 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10912 - 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/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 9024 - i32.store offset=16 + global.get $std/typedarray/forEachSelf + i32.ne + if i32.const 0 - local.set $0 - i32.const 9036 - i32.load - i32.const 2 - i32.add - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 8 - i32.add - local.set $7 - i32.const 9028 - i32.load - local.set $5 - i32.const 9036 - i32.load - local.set $6 - loop $for-loop|00 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - 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 $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10976 - 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/Uint32Array> - local.get $1 - local.get $3 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $4 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 9104 - i32.store offset=16 - local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 11040 - call $~lib/rt/__newArray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $1 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 - call $~lib/builtins/abort - unreachable + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 i32.const 0 i32.store + local.get $3 + i32.const 6448 + i32.store + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.load offset=12 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 i32.const 1568 - i32.const 735 - i32.const 3 + i32.const 514 + i32.const 5 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $5 - i64.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 11216 - i32.store - i32.const 11216 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i64_s - local.get $5 - 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 + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount 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) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $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.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 + 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 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 + i32.store 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 + i32.const 6448 + i32.store + local.get $0 + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount 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 + i32.add + global.set $std/typedarray/forEachCallCount 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=12 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8848 - 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 11104 - call $~lib/rt/__newArray - local.set $0 + 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 + i32.const 0 + i32.store + local.get $3 + i32.const 6448 + i32.store local.get $0 - i32.store offset=16 + i32.const 6448 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - i32.const 8928 - i32.store offset=16 - i32.const 0 - local.set $0 - block $folding-inner0 - i32.const 8940 - 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 8932 - i32.load - local.set $6 - i32.const 8940 - 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 11264 - 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 11376 - 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 9024 - i32.store offset=16 + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne + if i32.const 0 - local.set $0 - i32.const 9036 - 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 9028 - i32.load - local.set $5 - i32.const 9036 - 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 11488 - 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 9104 - 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 11600 - 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 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 - call $~lib/builtins/abort - unreachable + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) - (local $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 i32.const 0 i32.store + local.get $3 + i32.const 6448 + i32.store local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 + i32.const 6448 local.get $1 - i32.load offset=12 + call $~lib/array/Array#__get + f64.convert_i32_s + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 i32.const 1568 - i32.const 735 - i32.const 3 + i32.const 514 + i32.const 5 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Uint64Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#__uget - local.tee $5 - i64.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 11824 - i32.store - i32.const 11824 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i64_u - local.get $5 - 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 + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -32222,374 +35655,268 @@ (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 - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 0 i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.get $1 + i32.const 6912 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.get $1 + i32.const 6924 + i32.load local.tee $2 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 i32.store offset=4 + global.get $~lib/memory/__stack_pointer 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 + call $~lib/typedarray/Int8Array#constructor + local.tee $5 i32.store offset=8 - local.get $4 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $5 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end 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 8848 - 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 11712 - 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 8928 - i32.store offset=16 - i32.const 0 - local.set $0 - block $folding-inner0 - i32.const 8940 - 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 8932 - i32.load - local.set $6 - i32.const 8940 - i32.load - local.set $7 - loop $for-loop|0 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if local.get $0 + local.get $4 + i32.add + local.tee $6 + i32.load8_s + local.set $7 + local.get $6 + local.get $3 + local.get $4 + i32.add + local.tee $6 + i32.load8_s + i32.store8 + local.get $6 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 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 end - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11872 - 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 11984 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $1 + end + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - i32.const 9024 - i32.store offset=16 - i32.const 0 - local.set $0 - i32.const 9036 - 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 9028 - i32.load - local.set $5 - i32.const 9036 - i32.load - local.set $6 - loop $for-loop|00 + local.get $2 + i32.lt_s + if + local.get $1 local.get $0 - local.get $6 - i32.lt_s + call $~lib/typedarray/Int8Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.ne 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 + i32.const 0 + i32.const 1568 + i32.const 547 + 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 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 12096 - 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 9104 - 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 12208 - 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 f32) - (local $5 f32) global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 + local.set $2 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 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 local.get $2 local.get $3 - i32.lt_s + i32.lt_u if - local.get $0 local.get $2 - call $~lib/typedarray/Float32Array#__uget + local.get $5 + i32.add local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.tee $5 - f32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 12384 - i32.store - i32.const 12384 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.promote_f32 - local.get $5 - 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 + i32.load8_s + local.set $6 + local.get $4 + local.get $3 + local.get $5 + i32.add + local.tee $4 + i32.load8_s + i32.store8 + local.get $4 + local.get $6 + i32.store8 local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 end end + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 552 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 553 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 554 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 555 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -32598,8861 +35925,5647 @@ (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 - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 0 i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.get $1 + i32.const 6912 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 + local.get $1 + i32.const 6924 + i32.load + local.tee $2 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $1 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 + local.get $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 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 8848 - i32.store offset=16 - block $folding-inner0 - i32.const 8860 - 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 8852 - i32.load - local.set $6 - i32.const 8860 - 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 12320 - 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 8928 - i32.store offset=16 - i32.const 8940 - 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 8932 - i32.load - i32.const 8936 - i32.load - call $~lib/memory/memory.copy - i32.const 10 - i32.const 2 - i32.const 61 - 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 $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 + loop $for-loop|0 + local.get $0 local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $2 - loop $for-loop|00 + i32.lt_s + if 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 12496 - 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 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $5 + local.get $0 + i32.const 6912 + 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|0 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 + end + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|00 + local.get $0 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 + i32.lt_u + if 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 9104 - i32.store offset=16 - i32.const 0 - local.set $0 - i32.const 9116 - 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 9108 - i32.load - local.set $4 - i32.const 9116 - i32.load - local.set $1 - loop $for-loop|03 + i32.add + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 + local.get $3 + local.get $4 + i32.add + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 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 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 end - i32.const 10 - i32.const 2 - i32.const 61 - 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 $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 f64) - (local $5 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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.set $0 + loop $for-loop|1 + local.get $0 local.get $2 - local.get $3 i32.lt_s if - local.get $0 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.tee $4 local.get $1 + local.get $0 + call $~lib/typedarray/Uint8Array#__get + i32.const 6912 local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.tee $5 - f64.ne + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 12736 - i32.store - i32.const 12736 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - local.get $5 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace i32.const 0 i32.const 1568 - i32.const 741 - i32.const 7 + i32.const 547 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $0 + br $for-loop|1 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - 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 + local.get $5 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $1 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.store offset=12 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.set $2 local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set + i32.load offset=4 + local.set $5 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.load offset=8 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 8848 - i32.store offset=16 - block $folding-inner0 - i32.const 8860 - 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 8852 - i32.load - local.set $6 - i32.const 8860 - 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 12624 - 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 8928 - i32.store offset=16 - i32.const 0 - local.set $0 - i32.const 8940 - 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 8932 - i32.load - local.set $6 - i32.const 8940 - 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 12784 - 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 12896 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $3 + i32.sub + local.set $3 + loop $for-loop|02 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 + i32.lt_u + if 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 $5 + i32.add + local.tee $4 + i32.load8_u + local.set $6 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 9104 - i32.store offset=16 - i32.const 0 - local.set $1 - i32.const 9116 - 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 9108 - i32.load - local.set $4 - i32.const 9116 - 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 13008 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 + local.get $3 + local.get $5 + i32.add + local.tee $4 + i32.load8_u + i32.store8 + local.get $4 + local.get $6 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 end - i32.const 13184 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13184 - i32.store end - local.get $0 local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + i32.store offset=16 + local.get $1 i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 i32.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 i32.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 i32.ne if i32.const 0 i32.const 1568 - i32.const 857 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 13216 - i32.store offset=8 - local.get $0 - i32.const 13216 - call $~lib/typedarray/Int8Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get + local.get $1 i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 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 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (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 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + i32.store offset=16 + local.get $1 + i32.const 6912 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.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + local.get $4 + i32.add + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 + local.get $3 + local.get $4 + i32.add + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + i32.const 5 + call $~lib/builtins/abort + unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - i32.const 13248 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13248 - i32.store end - local.get $0 - local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + local.get $5 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - call $~lib/typedarray/Uint8Array#__get + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $5 + i32.add + local.tee $4 + i32.load8_u + local.set $6 + local.get $4 + local.get $3 + local.get $5 + i32.add + local.tee $4 + i32.load8_u + i32.store8 + local.get $4 + local.get $6 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 + end + end + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 i32.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 i32.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 i32.ne if i32.const 0 i32.const 1568 - i32.const 857 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 13280 - i32.store offset=8 - local.get $0 - i32.const 13280 - call $~lib/typedarray/Uint8Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get + local.get $1 i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 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 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8> + (func $std/typedarray/testArrayReverse<~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 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + i32.store offset=16 + local.get $1 + i32.const 6912 i32.store - local.get $0 - i32.const 2 + local.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int16Array#constructor + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $5 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + i32.shr_u 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load16_s + local.set $7 + local.get $6 + local.get $4 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load16_s + i32.store16 + local.get $6 + local.get $7 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Int16Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + i32.const 5 + call $~lib/builtins/abort + unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - i32.const 13312 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13312 - i32.store end - local.get $0 - local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + local.get $5 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $5 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $4 + i32.load16_s + local.set $6 + local.get $4 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $4 + i32.load16_s + i32.store16 + local.get $4 + local.get $6 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 + end + end + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 i32.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 7 i32.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 6 i32.ne if i32.const 0 i32.const 1568 - i32.const 857 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 13344 - i32.store offset=8 - local.get $0 - i32.const 13344 - call $~lib/typedarray/Uint8Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + local.get $1 i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 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 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (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 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 + i32.store offset=16 + local.get $1 + i32.const 6912 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=4 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 + local.get $2 + call $~lib/typedarray/Uint16Array#constructor + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $5 + local.get $0 + i32.const 6912 + 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 - i32.const 13376 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13376 - i32.store end - local.get $0 - local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 i32.const 0 - call $~lib/typedarray/Int16Array#__get + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 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.shr_u 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 + i32.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load16_u + local.set $7 + local.get $6 + local.get $4 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load16_u + i32.store16 + local.get $6 + local.get $7 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end end - global.get $~lib/memory/__stack_pointer - i32.const 13408 - i32.store offset=8 - local.get $0 - i32.const 13408 - 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 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + 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 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $5 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 2 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 + i32.shr_u 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $5 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $4 + i32.load16_u + local.set $6 + local.get $4 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $4 + i32.load16_u + i32.store16 + local.get $4 + local.get $6 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 end - i32.const 13440 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13440 - i32.store end - local.get $0 local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + i32.store offset=16 + local.get $1 i32.const 0 call $~lib/typedarray/Uint16Array#__get - i32.const 1 + i32.const 8 i32.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get - i32.const 2 + i32.const 7 i32.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get - i32.const 3 + i32.const 6 i32.ne if i32.const 0 i32.const 1568 - i32.const 857 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 13472 - i32.store offset=8 - local.get $0 - i32.const 13472 - call $~lib/typedarray/Uint16Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get + local.get $1 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.const 5 i32.ne if i32.const 0 i32.const 1568 - i32.const 861 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayReverse<~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 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 + i32.store offset=16 + local.get $1 + i32.const 6912 + i32.store + local.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3 + local.get $2 call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $5 + local.get $0 + i32.const 6912 + 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|0 + end + end + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 i32.const 2 + i32.shr_u 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.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load + local.set $7 + local.get $6 + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load + i32.store + local.get $6 + local.get $7 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Int32Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + 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 + local.get $5 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $6 + local.get $4 + local.get $5 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $4 + local.get $6 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 end - i32.const 13504 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13504 - i32.store end - local.get $0 local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + i32.store offset=16 + local.get $1 i32.const 0 call $~lib/typedarray/Int32Array#__get - i32.const 1 + i32.const 8 i32.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get - i32.const 2 + i32.const 7 i32.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get - i32.const 3 + i32.const 6 i32.ne if i32.const 0 i32.const 1568 - i32.const 857 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 13536 - i32.store offset=8 - local.get $0 - i32.const 13536 - call $~lib/typedarray/Int32Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get + local.get $1 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.const 5 i32.ne if i32.const 0 i32.const 1568 - i32.const 861 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (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 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 + i32.store offset=16 + local.get $1 + i32.const 6912 + i32.store + local.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3 + local.get $2 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $5 + local.get $0 + i32.const 6912 + 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|0 + end + end + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 i32.const 2 + i32.shr_u 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.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load + local.set $7 + local.get $6 + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load + i32.store + local.get $6 + local.get $7 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $5 + i32.const 8 + call $~lib/typedarray/Uint32Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $6 + local.get $4 + local.get $5 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $4 + local.get $6 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 end - i32.const 13568 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13568 - i32.store end - local.get $0 local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + i32.store offset=16 + local.get $1 i32.const 0 call $~lib/typedarray/Uint32Array#__get - i32.const 1 + i32.const 8 i32.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get - i32.const 2 + i32.const 7 i32.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get - i32.const 3 + i32.const 6 i32.ne if i32.const 0 i32.const 1568 - i32.const 857 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 13600 - i32.store offset=8 - local.get $0 - i32.const 13600 - call $~lib/typedarray/Uint32Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get + local.get $1 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.const 5 i32.ne if i32.const 0 i32.const 1568 - i32.const 861 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 + i32.store offset=16 + local.get $1 + i32.const 6912 + i32.store + local.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3 + local.get $2 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 + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $5 + local.get $0 + i32.const 6912 + 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 i32.const 0 - i64.const 3 - call $~lib/typedarray/Int64Array#__set + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load + local.set $7 + local.get $6 + local.get $4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load + i64.store + local.get $6 + local.get $7 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Int64Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $5 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $5 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i64.load + local.set $7 + local.get $4 + local.get $5 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i64.load + i64.store + local.get $4 + local.get $7 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 end - i32.const 13632 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13632 - i32.store end - local.get $0 local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + i32.store offset=16 + local.get $1 i32.const 0 call $~lib/typedarray/Int64Array#__get - i64.const 1 + i64.const 8 i64.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get - i64.const 2 + i64.const 7 i64.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 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 13664 - i32.store offset=8 - local.get $0 - i32.const 13664 - 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.const 6 i64.ne if i32.const 0 i32.const 1568 - i32.const 860 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 + local.get $1 + i32.const 3 call $~lib/typedarray/Int64Array#__get - i64.const 1 + i64.const 5 i64.ne if i32.const 0 i32.const 1568 - i32.const 861 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayReverse<~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 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 + i32.store offset=16 + local.get $1 + i32.const 6912 + i32.store + local.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3 + local.get $2 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 + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $5 + local.get $0 + i32.const 6912 + 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|0 + end + end i32.const 0 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load + local.set $7 + local.get $6 + local.get $4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load + i64.store + local.get $6 + local.get $7 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $5 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $5 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i64.load + local.set $7 + local.get $4 + local.get $5 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $4 + i64.load + i64.store + local.get $4 + local.get $7 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 end - i32.const 13696 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13696 - i32.store end - local.get $0 local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + i32.store offset=16 + local.get $1 i32.const 0 call $~lib/typedarray/Uint64Array#__get - i64.const 1 + i64.const 8 i64.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get - i64.const 2 + i64.const 7 i64.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 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 13728 - i32.store offset=8 - local.get $0 - i32.const 13728 - 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.const 6 i64.ne if i32.const 0 i32.const 1568 - i32.const 860 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 + local.get $1 + i32.const 3 call $~lib/typedarray/Uint64Array#__get - i64.const 1 + i64.const 5 i64.ne if i32.const 0 i32.const 1568 - i32.const 861 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 + i32.store offset=16 + local.get $1 + i32.const 6912 + i32.store + local.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3 + local.get $2 call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - local.get $0 + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $5 + local.get $0 + i32.const 6912 + 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 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 i32.const 2 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 + i32.shr_u 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.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load + local.set $7 + local.get $6 + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load + f32.store + local.get $6 + local.get $7 + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Float32Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $5 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + f32.load + local.set $7 + local.get $4 + local.get $5 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + f32.load + f32.store + local.get $4 + local.get $7 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 end - i32.const 13760 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 13760 - i32.store end - local.get $0 local.get $1 - 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 $0 - i32.store offset=4 - local.get $0 + i32.store offset=16 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get - f32.const 1 + f32.const 8 f32.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get - f32.const 2 + f32.const 7 f32.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 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 13792 - i32.store offset=8 - local.get $0 - i32.const 13792 - 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.const 6 f32.ne if i32.const 0 i32.const 1568 - i32.const 860 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 + local.get $1 + i32.const 3 call $~lib/typedarray/Float32Array#__get - f32.const 1 + f32.const 5 f32.ne if i32.const 0 i32.const 1568 - i32.const 861 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 - global.get $~lib/memory/__stack_pointer + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.store offset=8 + i32.store offset=16 + local.get $1 + i32.const 6912 + i32.store + local.get $1 + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 3 + local.get $2 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 + local.tee $5 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $5 + local.get $0 + i32.const 6912 + 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 i32.const 0 - f64.const 3 - call $~lib/typedarray/Float64Array#__set + local.set $0 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|00 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + local.set $7 + local.get $6 + local.get $4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + f64.store + local.get $6 + local.get $7 + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|00 + end + end i32.const 0 - global.set $~argumentsLength + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Float64Array#__get + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + f64.convert_i32_s + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 547 + 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 - local.get $0 - call $~lib/typedarray/Float64Array#sort@varargs - local.tee $0 - i32.store offset=4 - local.get $0 + local.get $5 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float64Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + i32.const 0 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $5 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $4 + f64.load + local.set $7 + local.get $4 + local.get $5 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $4 + f64.load + f64.store + local.get $4 + local.get $7 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|02 + end + end + local.get $1 + i32.store offset=16 + local.get $1 i32.const 0 call $~lib/typedarray/Float64Array#__get - f64.const 1 + f64.const 8 f64.ne if i32.const 0 i32.const 1568 - i32.const 855 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Float64Array#__get - f64.const 2 + f64.const 7 f64.ne if i32.const 0 i32.const 1568 - i32.const 856 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 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 13824 - i32.store offset=8 - local.get $0 - i32.const 13824 - call $~lib/typedarray/Float64Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 + f64.const 6 f64.ne if i32.const 0 i32.const 1568 - i32.const 859 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 + local.get $1 + i32.const 3 call $~lib/typedarray/Float64Array#__get - f64.const 2 + f64.const 5 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 555 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $start:std/typedarray - (local $0 i32) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 f32) - (local $8 f64) - (local $9 i64) - (local $10 f32) - (local $11 f64) - (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 - memory.size - i32.const 16 - i32.shl - i32.const 30852 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1280 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1312 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1456 - call $~lib/rt/itcms/initLazy - 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 + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 100 - i32.const 3 + 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.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - local.tee $0 + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 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 + call $~lib/typedarray/Uint8Array#join + global.get $~lib/memory/__stack_pointer 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.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.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 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 106 - i32.const 3 + 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 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 $0 i32.store local.get $0 i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 4 + local.tee $3 + local.get $1 + i32.load offset=12 i32.ne if i32.const 0 i32.const 1568 - i32.const 122 + i32.const 735 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 + 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 - local.get $0 - i32.load offset=8 - i32.const 32 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + (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 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 32336 + i32.const 32384 + i32.const 1 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 + 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/Uint8ClampedArray#constructor - local.tee $0 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 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 + local.get $3 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 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $3 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 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $3 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 + i64.const 9 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store - local.get $0 + 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 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 + 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 - 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 1 - i32.const 1 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer i32.const 3 - call $~lib/typedarray/Int8Array#fill - i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 i32.const 0 - i32.const 15 - i32.const 1728 - call $~lib/rt/__newArray - local.set $1 + 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 - 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 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - i32.const 5 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 10 i32.const 0 i32.const 15 - i32.const 1808 + i32.const 10608 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=16 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 $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - i32.const 5 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 10384 + i32.store offset=16 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 $0 - local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 155 + local.set $0 + block $folding-inner0 + local.get $1 + i32.load offset=8 + i32.const 10396 + i32.load i32.const 3 - call $~lib/builtins/abort - unreachable + i32.add + i32.lt_s + br_if $folding-inner0 + 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 + i32.load + local.set $9 + loop $for-loop|0 + local.get $0 + local.get $9 + i32.lt_s + if + local.get $0 + local.get $5 + i32.add + local.get $6 + 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 + local.get $0 + i32.const 1 + i32.add + local.set $0 + 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.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + 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 + 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 + local.get $1 + i32.load offset=8 + i32.const 10492 + i32.load + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner0 + local.get $1 + 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|00 + local.get $0 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $3 + i32.add + local.get $5 + 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 + i32.const 0 + end + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + 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 - local.get $0 - 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 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) 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 + 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 0 - i32.const 1568 - i32.const 158 - i32.const 3 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - 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 + i32.const 0 + i32.store local.get $0 + i32.load offset=8 + local.tee $3 local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz + i32.load offset=12 + i32.ne if i32.const 0 i32.const 1568 - i32.const 161 + 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 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 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer - local.get $0 - 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 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (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 0 - i32.const 1568 - i32.const 165 - i32.const 3 + 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 - i32.load offset=4 + i64.const 0 + i64.store offset=8 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 + i32.const 0 + i32.store offset=16 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 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store + local.get $3 i32.const 0 - i32.const 15 - i32.const 1936 - call $~lib/rt/__newArray - local.set $2 + 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 - local.get $2 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=4 - local.get $1 local.get $2 - 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 $0 - 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 $0 - i32.store offset=8 - local.get $0 i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $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 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 - call $~lib/typedarray/Int32Array#__set - local.get $0 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer 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 - local.get $0 - i32.const 1 + 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 3 - call $~lib/typedarray/Int32Array#fill - i32.const 5 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $4 i32.const 2 - i32.const 16 - i32.const 2000 - call $~lib/rt/__newArray - local.set $1 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set 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 181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2048 - call $~lib/rt/__newArray - local.set $1 + 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 - 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 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 10 i32.const 0 - i32.const -3 - call $~lib/typedarray/Int32Array#fill - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2096 + i32.const 63 + i32.const 10816 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=16 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 $0 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2144 - call $~lib/rt/__newArray - local.set $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> 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 190 + 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 - call $~lib/builtins/abort - unreachable + i32.add + i32.lt_s + br_if $folding-inner0 + 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 + i32.load + local.set $9 + loop $for-loop|0 + local.get $0 + local.get $9 + i32.lt_s + if + local.get $0 + local.get $5 + i32.add + local.get $6 + 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 + local.get $0 + i32.const 1 + i32.add + local.set $0 + 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.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + 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 + 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 + local.get $1 + i32.load offset=8 + i32.const 10492 + i32.load + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner0 + local.get $1 + 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|00 + local.get $0 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $3 + i32.add + local.get $5 + 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 + i32.const 0 + end + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + 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 - local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int32Array#fill - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2192 - call $~lib/rt/__newArray - local.set $1 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) 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 + 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 0 - i32.const 1568 - i32.const 193 - i32.const 3 + 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.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - i32.store offset=12 - local.get $1 - i32.const 0 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - local.get $1 + i32.store + 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 197 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 + local.tee $3 local.get $1 - i32.load - i32.sub - i32.const 4 + i32.load offset=12 i32.ne if i32.const 0 i32.const 1568 - i32.const 198 + i32.const 735 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 199 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - i32.const 3 - i32.const 2 - i32.const 16 - i32.const 2240 - call $~lib/rt/__newArray - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - 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 + 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 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + 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 0 - i32.const 1568 - i32.const 201 - i32.const 3 + 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 6 - call $~lib/typedarray/Int8Array#constructor local.tee $0 - i32.store offset=12 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 local.get $0 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set + 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 - call $~lib/typedarray/Int8Array#__set - local.get $0 + 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 - 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 + i32.const 103 + call $~lib/typedarray/Uint8Array#__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.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $8 i32.store offset=8 - local.get $0 + local.get $8 i32.const 0 - call $~lib/typedarray/Int8Array#__get + 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.ne - if + 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 + 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 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 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 - i32.const 1568 - i32.const 223 + local.set $1 + local.get $0 + i32.load offset=8 + i32.const 10396 + i32.load 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.add + i32.lt_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 5 - i32.ne - if + i32.add + local.set $3 + i32.const 10388 + i32.load + local.set $5 + i32.const 10396 + i32.load + 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 $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 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + i32.const 10 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 63 + i32.const 11120 + 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> + 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 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 63 + i32.const 11152 + 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 10480 + i32.store offset=16 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 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 10492 + i32.load + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner0 + 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 + end + i32.const 10 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 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> + local.get $2 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.gt_s + br_if $folding-inner0 + local.get $0 + 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 i32.const 0 - i32.const 1568 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.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 i32) 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 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 234 - i32.const 3 + 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.const 1 + i32.shr_u + local.tee $4 + local.get $1 + i32.load offset=12 i32.ne if i32.const 0 i32.const 1568 - i32.const 235 + i32.const 735 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 + loop $for-loop|0 + local.get $2 + local.get $4 + 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_s + local.tee $5 + local.get $3 + local.get $1 + i32.load offset=4 + i32.add + i32.load16_s + local.tee $3 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 11296 + i32.store + i32.const 11296 + i32.const 3 + 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 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (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 0 - i32.const 1568 - i32.const 237 - i32.const 3 + 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 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 + i64.const 0 + i64.store local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set + i64.const 0 + i64.store offset=8 local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set + i32.const 0 + i32.store offset=16 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 $0 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 i32.store - local.get $1 + local.get $3 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 + 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 - i32.const 16 - i32.const 2320 - call $~lib/rt/__newArray - local.set $2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=4 - local.get $1 local.get $2 - 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 $0 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 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 $2 - global.get $~lib/memory/__stack_pointer + i32.const 101 + call $~lib/typedarray/Uint8Array#__set local.get $2 - i32.store offset=4 - local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set local.get $2 - 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 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 + 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 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set 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 $2 + i32.const 10 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + i32.const 10304 + i32.store offset=16 local.get $1 - local.get $2 - 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 + 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.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 $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 $2 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 254 + i32.const 10384 + i32.store offset=16 + i32.const 0 + local.set $0 + block $folding-inner0 + i32.const 10396 + i32.load i32.const 3 - call $~lib/builtins/abort - unreachable + i32.add + 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 + i32.const 6 + i32.add + local.set $5 + i32.const 10388 + i32.load + local.set $6 + i32.const 10396 + i32.load + local.set $9 + loop $for-loop|0 + local.get $0 + local.get $9 + i32.lt_s + if + local.get $5 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $6 + 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 + local.get $0 + i32.const 1 + i32.add + local.set $0 + 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.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + 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 + 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 + 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 + 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 + local.get $0 + local.get $6 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 + 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 + i32.const 0 + end + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + 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.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $1 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + local.get $1 + local.get $4 + 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/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 11488 + 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/Int16Array> + 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/Uint16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - 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 $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 $2 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 256 - i32.const 3 + 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.get $0 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 + i32.store + local.get $0 + i32.load offset=8 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 $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + i32.shr_u + local.tee $4 local.get $1 - local.get $2 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + i32.load offset=12 + i32.ne if i32.const 0 i32.const 1568 - i32.const 258 + i32.const 735 i32.const 3 call $~lib/builtins/abort unreachable end + loop $for-loop|0 + local.get $2 + local.get $4 + 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 + local.get $1 + i32.load offset=4 + i32.add + i32.load16_u + local.tee $3 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 11584 + i32.store + i32.const 11584 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $5 + f64.convert_i32_u + local.get $3 + 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 - local.get $0 - 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 $1 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (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 - 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 $2 + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 260 - i32.const 3 + 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.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice local.tee $1 - i32.store offset=16 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 local.get $1 i32.const 0 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $1 - global.get $~lib/memory/__stack_pointer + i32.store offset=16 local.get $1 - i32.store offset=20 - i32.const 5 + 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 - i32.const 16 - i32.const 2656 - call $~lib/rt/__newArray - local.set $2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=4 - local.get $1 local.get $2 - 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 + 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 - local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice + 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/Uint16Array#constructor 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 $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer + i32.const 10304 + i32.store offset=16 local.get $1 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2704 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11536 call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - 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 + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - 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 $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 $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - 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 $0 - 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 $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 $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - 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 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $0 + i32.const 10384 i32.store offset=16 - local.get $0 - i32.const -4 - i32.const -3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin + 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 + br_if $folding-inner0 + 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 + i32.load + local.set $9 + loop $for-loop|0 + local.get $0 + local.get $9 + i32.lt_s + if + local.get $5 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $6 + 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.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11632 + 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/Uint16Array> + local.get $1 + local.get $3 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11680 + 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/Uint16Array> + 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 1 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $1 + i32.load offset=4 + 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 + local.get $0 + local.get $6 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 + 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 + i32.const 0 + end + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11728 + 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/Uint16Array> + local.get $1 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + local.get $1 + local.get $4 + 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/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11776 + 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/Uint16Array> + 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/Int32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) 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 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer 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 + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 270 - i32.const 3 + 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 5 - 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 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 + i32.store local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $2 - i32.store offset=16 - local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - i32.const 3 + local.tee $4 + local.get $1 + i32.load offset=12 i32.ne if i32.const 0 i32.const 1568 - i32.const 282 + i32.const 735 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 283 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $for-loop|0 + local.get $2 + local.get $4 + 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 + local.get $1 + i32.load offset=4 + i32.add + i32.load + local.tee $3 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 11888 + i32.store + i32.const 11888 + i32.const 3 + 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 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - local.get $2 - i32.load offset=8 - i32.const 12 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + (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) + (local $10 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 0 - i32.const 1568 - i32.const 284 - i32.const 3 + 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 1 i32.const 3 - call $~lib/typedarray/Int32Array#slice + call $~lib/typedarray/Int64Array#constructor local.tee $1 - i32.store offset=8 + i32.store 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 + i64.const 7 + call $~lib/typedarray/Int64Array#__set 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 + i64.const 8 + call $~lib/typedarray/Int64Array#__set 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 + i64.const 9 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $3 i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $3 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 102 + call $~lib/typedarray/Uint8Array#__set + local.get $3 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 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.ne - if - i32.const 0 - i32.const 1568 - i32.const 295 + 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/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 10396 + i32.load 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.add + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $5 + i32.const 10388 + i32.load + local.set $6 + i32.const 10396 + i32.load + local.set $10 + loop $for-loop|0 + local.get $2 + local.get $10 + i32.lt_s + if + local.get $5 + local.get $2 + 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 + 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 + local.set $2 + br $for-loop|0 + end + end + i32.const 10 + i32.const 2 + 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 $0 + local.get $2 + 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 16 + i32.const 12000 + 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/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 10480 + i32.store offset=16 i32.const 0 - i32.const 1568 - i32.const 296 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + 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 + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $7 + i32.const 10484 + i32.load + local.set $5 + i32.const 10492 + i32.load + local.set $6 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 + local.get $1 + i32.const 3 + i32.shl + i32.add + 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 $1 + br $for-loop|00 + end + end + i32.const 10 + i32.const 2 + 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 $0 + 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 + 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 16 + i32.const 12128 + 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/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $1 - i32.load offset=8 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (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.ne + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 297 - i32.const 3 + 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.get $0 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=24 - local.get $0 - local.get $1 - 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 + i32.store local.get $0 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.tee $4 local.get $1 - i32.load - i32.sub - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub + i32.load offset=12 i32.ne if i32.const 0 i32.const 1568 - i32.const 302 + i32.const 735 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $for-loop|0 + local.get $2 + local.get $4 + 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 + local.get $1 + i32.load offset=4 + i32.add + i32.load + local.tee $3 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 12256 + i32.store + i32.const 12256 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $5 + f64.convert_i32_u + local.get $3 + 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 8 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (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) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + 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 3 - call $~lib/typedarray/Int8Array#constructor local.tee $0 - i32.store + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 local.get $0 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set + i32.store offset=16 local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $1 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $1 i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set + i64.const 9 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 2896 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 i32.store offset=4 + local.get $3 i32.const 0 - local.set $1 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $3 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $3 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $3 + 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 - local.set $2 + 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/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 - i32.load offset=4 - local.set $3 + 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 - i32.load offset=8 - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $3 - i32.add - i32.load8_s - local.set $5 - i32.const 4 - global.set $~argumentsLength + 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 10396 + i32.load + 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 $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $5 + i32.const 10388 + i32.load + local.set $6 + i32.const 10396 + i32.load + local.set $10 + loop $for-loop|0 local.get $2 - local.get $5 - local.get $1 - local.get $0 - i32.const 2896 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + local.get $10 + i32.lt_s + if + local.get $5 + local.get $2 + 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 + 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 $2 + br $for-loop|0 + end + end + i32.const 10 + 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 $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> + 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.store offset=16 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + 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 $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $7 + i32.const 10484 + i32.load + local.set $5 + i32.const 10492 + i32.load + local.set $6 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 + local.get $1 + i32.const 3 + i32.shl + i32.add + 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|00 + end end - end - 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 - block $folding-inner0 - local.get $2 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 2928 - i32.store offset=4 - local.get $0 - i32.const 2928 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 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 - global.get $~lib/memory/__stack_pointer - i32.const 2960 - i32.store offset=4 - local.get $0 - i32.const 2960 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 2992 - i32.store offset=4 - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|00 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $1 - local.get $0 - i32.const 2992 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - local.get $2 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3024 - i32.store offset=4 - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|01 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $5 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $1 - local.get $0 - i32.const 3024 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 - end - end - local.get $2 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3056 - i32.store offset=4 - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $for-loop|02 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $1 - local.get $0 - i32.const 3056 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - end - end - local.get $2 - i32.const 6 - i32.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3088 - i32.store offset=4 - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $for-loop|03 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $1 - local.get $0 - i32.const 3088 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|03 - end - end - local.get $2 - i32.const 6 - i32.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 3120 - i32.store offset=4 - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $3 - loop $for-loop|04 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $6 - local.get $9 - local.get $1 - local.get $0 - i32.const 3120 - i32.load - call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $6 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|04 - end - end - local.get $6 - i64.const 6 - i64.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 3152 - i32.store offset=4 - i32.const 0 - local.set $1 - i64.const 0 - local.set $6 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $3 - loop $for-loop|05 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $6 - local.get $9 - local.get $1 - local.get $0 - i32.const 3152 - i32.load - call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $6 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|05 - end - end - local.get $6 - i64.const 6 - i64.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 3184 - i32.store offset=4 - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|06 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - i32.const 4 - global.set $~argumentsLength - local.get $7 - local.get $10 - local.get $1 - local.get $0 - i32.const 3184 - i32.load - call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $7 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|06 - end - end - local.get $7 - f32.const 6 - f32.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 3216 - i32.store offset=4 - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $3 - loop $for-loop|07 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - i32.const 4 - global.set $~argumentsLength - local.get $8 - local.get $11 - local.get $1 - local.get $0 - i32.const 3216 - i32.load - call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|07 - end - end - local.get $8 - f64.const 6 - f64.ne - br_if $folding-inner0 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Int8Array#at - i32.const 3 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Int8Array#at - i32.const 1 - i32.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Uint8Array#at - i32.const 3 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Uint8Array#at - i32.const 1 - i32.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Uint8ClampedArray#at - i32.const 3 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Uint8ClampedArray#at - i32.const 1 - i32.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Int16Array#at - i32.const 3 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Int16Array#at - i32.const 1 - i32.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Uint16Array#at - i32.const 3 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Uint16Array#at - i32.const 1 - i32.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - 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.const 0 - call $~lib/typedarray/Int32Array#at - i32.const 1 - i32.ne - br_if $folding-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Int32Array#at - i32.const 3 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Int32Array#at - i32.const 1 - i32.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Uint32Array#at - i32.const 3 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Uint32Array#at - i32.const 1 - i32.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Int64Array#at - i64.const 3 - i64.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Int64Array#at - i64.const 1 - i64.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Uint64Array#at - i64.const 3 - i64.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Uint64Array#at - i64.const 1 - i64.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Float32Array#at - f32.const 3 - f32.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Float32Array#at - f32.const 1 - f32.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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-inner1 - local.get $0 - i32.const -1 - call $~lib/typedarray/Float64Array#at - f64.const 3 - f64.ne - br_if $folding-inner2 - local.get $0 - i32.const -3 - call $~lib/typedarray/Float64Array#at - f64.const 1 - f64.ne - br_if $folding-inner3 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3248 - i32.store offset=4 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|08 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $3 - i32.add - i32.load8_s - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - local.get $0 - i32.const 3248 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|08 - end - end - local.get $2 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3280 - i32.store offset=4 - local.get $0 - i32.const 3280 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 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 - global.get $~lib/memory/__stack_pointer - i32.const 3312 - i32.store offset=4 - local.get $0 - i32.const 3312 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3344 - i32.store offset=4 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|09 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - local.get $0 - i32.const 3344 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|09 - end - end - local.get $2 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3376 - i32.store offset=4 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|010 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - local.get $0 - i32.const 3376 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|010 - end - end - local.get $2 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store offset=4 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|011 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - local.get $0 - i32.const 3408 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|011 - end - end - local.get $2 - i32.const 6 - i32.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 3440 - i32.store offset=4 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|012 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - local.get $0 - i32.const 3440 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|012 - end - end - local.get $2 - i32.const 6 - i32.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 $6 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|013 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $6 - local.get $9 - local.get $1 - local.get $0 - i32.const 3472 - i32.load - call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $6 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|013 - end - end - local.get $6 - i64.const 6 - i64.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 $6 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|014 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $6 - local.get $9 - local.get $1 - local.get $0 - i32.const 3504 - i32.load - call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $6 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|014 - end - end - local.get $6 - i64.const 6 - i64.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 $7 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|015 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - i32.const 4 - global.set $~argumentsLength - local.get $7 - local.get $10 - local.get $1 - local.get $0 - i32.const 3536 - i32.load - call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $7 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|015 - end - end - local.get $7 - f32.const 6 - f32.ne - br_if $folding-inner4 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 $8 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|016 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - i32.const 4 - global.set $~argumentsLength - local.get $8 - local.get $11 - local.get $1 - local.get $0 - i32.const 3568 - i32.load - call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $8 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|016 - end - end - local.get $8 - f64.const 6 - f64.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4304 - i32.store offset=4 - local.get $0 - i32.const 4304 - call $~lib/typedarray/Int8Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4336 - i32.store offset=4 - local.get $0 - i32.const 4336 - call $~lib/typedarray/Int8Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4368 - i32.store offset=4 - local.get $0 - i32.const 4368 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4400 - i32.store offset=4 - local.get $0 - i32.const 4400 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 4432 - i32.store offset=4 - local.get $0 - i32.const 4432 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store offset=4 - local.get $0 - i32.const 4464 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4496 - i32.store offset=4 - local.get $0 - i32.const 4496 - call $~lib/typedarray/Int16Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4528 - i32.store offset=4 - local.get $0 - i32.const 4528 - call $~lib/typedarray/Int16Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4560 - i32.store offset=4 - local.get $0 - i32.const 4560 - call $~lib/typedarray/Uint16Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4592 - i32.store offset=4 - local.get $0 - i32.const 4592 - call $~lib/typedarray/Uint16Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4624 - i32.store offset=4 - local.get $0 - i32.const 4624 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=4 - local.get $0 - i32.const 4656 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4688 - i32.store offset=4 - local.get $0 - i32.const 4688 - call $~lib/typedarray/Uint32Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4720 - i32.store offset=4 - local.get $0 - i32.const 4720 - call $~lib/typedarray/Uint32Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4752 - i32.store offset=4 - local.get $0 - i32.const 4752 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4784 - i32.store offset=4 - local.get $0 - i32.const 4784 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4816 - i32.store offset=4 - local.get $0 - i32.const 4816 - call $~lib/typedarray/Uint64Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4848 - i32.store offset=4 - local.get $0 - i32.const 4848 - call $~lib/typedarray/Uint64Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store offset=4 - local.get $0 - i32.const 4880 - call $~lib/typedarray/Float32Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4912 - i32.store offset=4 - local.get $0 - i32.const 4912 - call $~lib/typedarray/Float32Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 - local.get $0 - i32.const 4944 - call $~lib/typedarray/Float64Array#some - i32.eqz - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - local.get $0 - i32.const 4976 - call $~lib/typedarray/Float64Array#some - br_if $folding-inner6 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5008 - i32.store offset=4 - local.get $0 - i32.const 5008 - call $~lib/typedarray/Int8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5040 - i32.store offset=4 - local.get $0 - i32.const 5040 - call $~lib/typedarray/Int8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5072 - i32.store offset=4 - local.get $0 - i32.const 5072 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5104 - i32.store offset=4 - local.get $0 - i32.const 5104 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 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 - global.get $~lib/memory/__stack_pointer - i32.const 5136 - i32.store offset=4 - local.get $0 - i32.const 5136 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5168 - i32.store offset=4 - local.get $0 - i32.const 5168 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5200 - i32.store offset=4 - local.get $0 - i32.const 5200 - call $~lib/typedarray/Int16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5232 - i32.store offset=4 - local.get $0 - i32.const 5232 - call $~lib/typedarray/Int16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5264 - i32.store offset=4 - local.get $0 - i32.const 5264 - call $~lib/typedarray/Uint16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5296 - i32.store offset=4 - local.get $0 - i32.const 5296 - call $~lib/typedarray/Uint16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5328 - i32.store offset=4 - local.get $0 - i32.const 5328 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5360 - i32.store offset=4 - local.get $0 - i32.const 5360 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5392 - i32.store offset=4 - local.get $0 - i32.const 5392 - call $~lib/typedarray/Uint32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5424 - i32.store offset=4 - local.get $0 - i32.const 5424 - call $~lib/typedarray/Uint32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 5456 - i32.store offset=4 - local.get $0 - i32.const 5456 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5488 - i32.store offset=4 - local.get $0 - i32.const 5488 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 5520 - i32.store offset=4 - local.get $0 - i32.const 5520 - call $~lib/typedarray/Uint64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5552 - i32.store offset=4 - local.get $0 - i32.const 5552 - call $~lib/typedarray/Uint64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 5584 - i32.store offset=4 - local.get $0 - i32.const 5584 - call $~lib/typedarray/Float32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=4 - local.get $0 - i32.const 5616 - call $~lib/typedarray/Float32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - 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 5648 - i32.store offset=4 - local.get $0 - i32.const 5648 - call $~lib/typedarray/Float64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 5680 - i32.store offset=4 - local.get $0 - i32.const 5680 - call $~lib/typedarray/Float64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5712 - i32.store offset=4 - local.get $0 - i32.const 5712 - call $~lib/typedarray/Int8Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 5744 - i32.store offset=4 - local.get $0 - i32.const 5744 - call $~lib/typedarray/Int8Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5776 - i32.store offset=4 - local.get $0 - i32.const 5776 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 5808 - i32.store offset=4 - local.get $0 - i32.const 5808 - call $~lib/typedarray/Uint8Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 5840 - i32.store offset=4 - local.get $0 - i32.const 5840 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 5872 - i32.store offset=4 - local.get $0 - i32.const 5872 - call $~lib/typedarray/Uint8Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.store offset=4 - local.get $0 - i32.const 5904 - call $~lib/typedarray/Int16Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 5936 - i32.store offset=4 - local.get $0 - i32.const 5936 - call $~lib/typedarray/Int16Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5968 - i32.store offset=4 - local.get $0 - i32.const 5968 - call $~lib/typedarray/Uint16Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 6000 - i32.store offset=4 - local.get $0 - i32.const 6000 - call $~lib/typedarray/Uint16Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - 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 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6032 - i32.store offset=4 - local.get $0 - i32.const 6032 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 6064 - i32.store offset=4 - local.get $0 - i32.const 6064 - call $~lib/typedarray/Int32Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6096 - i32.store offset=4 - local.get $0 - i32.const 6096 - call $~lib/typedarray/Uint32Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 6128 - i32.store offset=4 - local.get $0 - i32.const 6128 - call $~lib/typedarray/Uint32Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6160 - i32.store offset=4 - local.get $0 - i32.const 6160 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 6192 - i32.store offset=4 - local.get $0 - i32.const 6192 - call $~lib/typedarray/Int64Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6224 - i32.store offset=4 - local.get $0 - i32.const 6224 - call $~lib/typedarray/Uint64Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 6256 - i32.store offset=4 - local.get $0 - i32.const 6256 - call $~lib/typedarray/Uint64Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6288 - i32.store offset=4 - local.get $0 - i32.const 6288 - call $~lib/typedarray/Float32Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 6320 - i32.store offset=4 - local.get $0 - i32.const 6320 - call $~lib/typedarray/Float32Array#every - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6352 - i32.store offset=4 - local.get $0 - i32.const 6352 - call $~lib/typedarray/Float64Array#every - i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 6384 - i32.store offset=4 - local.get $0 - i32.const 6384 - call $~lib/typedarray/Float64Array#every - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - 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 $0 - 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 $0 - 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 - local.get $0 - i32.const 6528 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.store - local.get $0 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $0 - 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 $0 - 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 $0 - 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 - local.get $0 - i32.const 6560 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> - 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 $0 - i32.store offset=12 - local.get $0 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $0 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - 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 $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.eqz - i32.const 1 - local.get $3 - select - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $1 - local.get $3 - 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 $8 - local.get $8 - f64.ne - local.get $8 - 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|0 - 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 $0 - i32.store offset=24 - local.get $0 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $0 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - 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 $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.eqz - i32.const 1 - local.get $3 - select - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|017 - local.get $1 - local.get $3 - 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 $7 - local.get $7 - f32.ne - local.get $7 - 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|017 - 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 - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> - 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 718 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - 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 $0 - 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 $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $3 - 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 $2 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $4 - local.get $0 - 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-inner12 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - local.set $5 - local.get $1 - i32.load offset=4 - local.set $12 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|018 - local.get $1 - local.get $4 - i32.gt_s - if - local.get $4 - local.get $5 - i32.add - local.get $12 - local.get $4 - 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) - f32.const 0 - f32.const 255 - local.get $7 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|018 - end - end - local.get $0 - local.get $3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 8 - i32.add - i32.lt_s - br_if $folding-inner12 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|019 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $1 - local.get $3 - i32.add - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $2 - i32.const 255 - local.get $2 - 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|019 - end - end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 13120 - 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/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 $2 - i32.store - local.get $2 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.lt_s - br_if $folding-inner12 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|020 - local.get $1 - local.get $3 - i32.gt_s - if - local.get $3 - local.get $4 - i32.add - i32.const 255 - local.get $5 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $12 - local.get $12 - i32.const 255 - i32.gt_u - select - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|020 - end - end - local.get $0 - local.get $2 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 13152 - 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/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> - call $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64> - i32.const 30852 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|021 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|021 - 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 - i32.const 0 - i32.const 1568 - i32.const 346 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 484 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 486 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 518 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 10 + 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 $0 + local.get $1 + 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 + global.set $~lib/memory/__stack_pointer + return end i32.const 1360 i32.const 1632 @@ -41461,959 +41574,913 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - 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 $0 - ) - (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result 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 i64) + (local $6 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + 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 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $1 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store + 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 - local.get $0 ) - (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.tee $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 + i32.const 15924 i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new local.tee $1 - i32.store + i64.const 0 + i64.store local.get $1 - local.get $3 - i32.load - local.tee $4 - i32.store + i64.const 0 + i64.store offset=8 local.get $1 - local.get $4 - call $~lib/rt/itcms/__link + 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.load offset=4 - local.get $0 i32.const 2 - i32.shl - i32.add + 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 $1 local.get $2 - local.get $0 - local.get $0 + 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.lt_s - select - local.get $0 - i32.sub i32.const 2 - i32.shl + 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 - i32.const 0 - i32.store local.get $0 - local.tee $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 + 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 - i32.lt_s - if (result i32) + local.set $0 + block $folding-inner0 + i32.const 10396 + i32.load + i32.const 3 + i32.add local.get $1 - local.get $4 + 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.tee $0 - i32.const 0 + 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 - select - else + br_if $folding-inner0 local.get $1 - local.get $4 + 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 $4 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + local.get $1 local.get $4 - i32.add - local.tee $1 - i32.const 0 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 10560 + i32.store offset=16 local.get $1 - i32.const 0 - i32.gt_s - select - else + 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 - local.get $4 + i32.store offset=16 + local.get $1 local.get $2 - local.get $4 - i32.lt_s - select - end - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - i32.load - local.tee $4 - i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.load offset=4 - local.get $0 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $0 - local.get $0 - local.get $2 - i32.lt_s - select - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - 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 1696 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1696 - i32.store + 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 - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array#sort - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) + (local $6 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 - global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 local.get $1 - i32.shl - local.tee $4 - local.set $5 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.set $1 - local.get $3 + i32.load offset=12 + i32.ne if - 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 + local.get $2 local.get $3 - local.get $5 - call $~lib/memory/memory.copy + 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 - local.get $1 - local.tee $3 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $1 - 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 ) - (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.tee $3 - i32.load offset=8 - local.set $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 + i32.const 15924 i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new local.tee $1 - i32.store + i64.const 0 + i64.store local.get $1 - local.get $3 - i32.load - local.tee $4 - i32.store + i64.const 0 + i64.store offset=8 local.get $1 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 0 + i32.store offset=16 local.get $1 - local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store local.get $3 - i32.load offset=4 - i32.add + 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 $1 local.get $2 - local.get $0 - local.get $0 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set local.get $2 - i32.lt_s - select - local.get $0 - i32.sub + 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 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + i32.const 10 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 - i32.const 0 - i32.store local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 + 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 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 + local.set $0 + block $folding-inner0 + i32.const 10396 + i32.load + i32.const 3 i32.add - local.tee $1 - i32.const 0 local.get $1 - i32.const 0 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.gt_s - select - else + br_if $folding-inner0 local.get $1 - 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|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 - i32.lt_s - select - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 + 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 - select - else - local.get $2 - local.get $3 + 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 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.const 2 - i32.shl - 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 + 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 $~lib/typedarray/Int8Array#filter (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (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 $5 f32) + (local $6 f32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=8 - local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store + 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.get $4 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 + i32.store local.get $0 - i32.load offset=4 - local.set $7 + 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 - local.get $4 i32.lt_s if - local.get $3 - local.get $7 - i32.add - i32.load8_s - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $3 + local.get $2 + i32.const 2 + i32.shl + local.tee $4 local.get $0 - i32.const 3952 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + 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 - local.get $1 + 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 - i32.add + f64.promote_f32 local.get $6 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 + 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 $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $2 - local.get $5 - local.get $1 - call $~lib/rt/itcms/__renew - local.tee $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint8Array#filter (param $0 i32) (result i32) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -42421,181 +42488,510 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $0 - i32.load offset=8 - local.set $4 + 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 $1 + i32.store + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 12 i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store + 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 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|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 - local.get $4 - i32.lt_s - if - 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 $2 local.get $7 - i32.add - i32.load8_u - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $3 + i32.lt_s + if + local.get $5 + local.get $2 + 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 $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 13776 + 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> + 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 $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 $1 + 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 $1 + i32.load offset=4 + 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 + if + local.get $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $6 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + f32.convert_i64_s + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 13952 + 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 $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 + local.get $0 + i32.load offset=8 + local.set $0 + loop $for-loop|04 local.get $0 - i32.const 3984 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + 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 - local.get $6 - i32.store8 + 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 + 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 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 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 - local.get $2 - local.get $5 - local.get $1 - call $~lib/rt/itcms/__renew - local.tee $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint8ClampedArray#filter (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (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 $5 f64) + (local $6 f64) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=8 - local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store + 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.get $4 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 + i32.store local.get $0 - i32.load offset=4 - local.set $7 + 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 - local.get $4 i32.lt_s if - local.get $3 - local.get $7 - i32.add - i32.load8_u - local.set $6 + local.get $2 i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $3 + i32.shl + local.tee $4 local.get $0 - i32.const 4016 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + 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 - local.get $1 + 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 - i32.add local.get $6 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 + 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 $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $2 - local.get $5 - local.get $1 - call $~lib/rt/itcms/__renew - local.tee $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Int16Array#filter (param $0 i32) (result i32) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -42604,202 +43000,444 @@ (local $6 i32) (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new + 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 - local.get $3 + 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.shl + 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 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|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 - local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.gt_s - if + 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 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $4 + 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|04 local.get $0 - i32.const 4048 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.get $7 + i32.lt_s if local.get $5 - local.get $1 + 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.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 - i32.store16 + 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|06 + 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|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 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end - end - local.get $2 - local.get $5 - local.get $1 - i32.const 1 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew - local.tee $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Uint16Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 + 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 - local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.gt_s - if - local.get $7 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $4 + 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|012 local.get $0 - i32.const 4080 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.get $1 + i32.gt_s if - local.get $5 + local.get $2 local.get $1 - i32.const 1 + i32.const 3 i32.shl i32.add - local.get $6 - i32.store16 + 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|012 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 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 - local.get $2 - local.get $5 - local.get $1 - i32.const 1 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew - local.tee $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int32Array#filter (param $0 i32) (result i32) + (func $start:std/typedarray + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -42807,1137 +43445,16592 @@ (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 8 + i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.gt_s - if - local.get $7 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $4 - local.get $0 - i32.const 4112 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $2 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew - local.tee $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + 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.const 24 + i32.shl + i32.const 24 + i32.shr_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.const 24 + i32.shl + i32.const 24 + i32.shr_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.const 24 + i32.shl + i32.const 24 + i32.shr_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.const 16 + i32.shl + i32.const 16 + i32.shr_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.const 16 + i32.shl + i32.const 16 + i32.shr_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.const 16 + i32.shl + i32.const 16 + i32.shr_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.eqz + i32.const 1 + local.get $4 + select + 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.eqz + i32.const 1 + local.get $2 + select + 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.eqz + i32.const 1 + local.get $4 + select + 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.eqz + i32.const 1 + local.get $2 + select + 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.const 24 + i32.shl + i32.const 24 + i32.shr_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.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $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 + i32.const 0 + i32.const 1568 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 518 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 652 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 653 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 649 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 650 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint32Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 i64.const 0 i64.store local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.gt_s - if - local.get $7 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $4 - local.get $0 - i32.const 4144 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $2 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew - local.tee $0 + local.get $0 + i32.const 0 i32.store - local.get $2 local.get $0 + i32.const 0 call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 local.get $0 + i32.const 0 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Int64Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store local.get $0 - i32.load offset=8 - i32.const 3 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1073741820 + local.get $2 i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 18 + i32.const 57 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 + local.get $1 + local.get $2 i32.shl + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.gt_s - if - local.get $7 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $4 - local.get $0 - i32.const 4176 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - if - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end + local.get $1 + i32.const 0 local.get $2 - local.get $5 + call $~lib/memory/memory.fill + local.get $0 local.get $1 - i32.const 3 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew - local.tee $0 i32.store - local.get $2 local.get $0 + local.get $1 call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.store offset=4 + local.get $0 + 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 $2 + local.get $0 ) - (func $~lib/typedarray/Uint64Array#filter (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $3 + 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 + i32.const 0 + i32.store + local.get $1 i32.const 12 - i32.const 11 + i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.gt_s - if - local.get $7 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $4 - local.get $0 - i32.const 4208 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - if - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $2 - local.get $5 local.get $1 - i32.const 3 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $0 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 ) - (func $~lib/typedarray/Float32Array#filter (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 + 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 + i32.const 0 + i32.store + local.get $1 i32.const 12 - i32.const 12 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.gt_s - if - local.get $7 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $4 - local.get $0 - i32.const 4240 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $2 - local.get $5 local.get $1 - i32.const 2 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $0 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 ) - (func $~lib/typedarray/Float64Array#filter (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store + 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.get $3 - i32.const 3 - i32.shl + local.tee $1 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.gt_s - if - local.get $7 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $4 - local.get $0 - i32.const 4272 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - if - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $2 - local.get $5 + i32.store + local.get $1 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 3 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $0 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 ) - (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 4 - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.set $3 - local.get $1 - i32.const 0 + i32.const 15924 i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 12 - i32.const 4 + i32.const 6 call $~lib/rt/itcms/__new local.tee $1 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 local.get $0 - i32.load - local.tee $4 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - local.get $0 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - local.get $3 - i32.sub - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 4 - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.set $3 - local.get $1 - i32.const 0 + i32.const 15924 i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 12 - i32.const 5 + i32.const 7 call $~lib/rt/itcms/__new local.tee $1 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 local.get $0 - i32.load - local.tee $4 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - local.get $0 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - local.get $3 - i32.sub - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) - (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.set $3 - local.get $1 - i32.const 0 + i32.const 15924 i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 12 - i32.const 6 + i32.const 8 call $~lib/rt/itcms/__new local.tee $1 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 local.get $0 - i32.load - local.tee $4 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - local.get $3 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) - (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.set $3 - local.get $1 - i32.const 0 + i32.const 15924 i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 12 - i32.const 7 + i32.const 9 call $~lib/rt/itcms/__new local.tee $1 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 local.get $0 - i32.load - local.tee $4 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - local.get $3 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) - (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 i32.const 0 i32.store + local.get $1 + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - local.get $2 + ) + (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.gt_s - select - local.set $3 - local.get $1 - i32.const 0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 12 - i32.const 9 + i32.const 11 call $~lib/rt/itcms/__new local.tee $1 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 local.get $0 - i32.load - local.tee $4 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - local.get $3 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) - (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 i32.const 0 i32.store + local.get $1 + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - local.get $2 + ) + (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.gt_s - select - local.set $3 - local.get $1 - i32.const 0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new local.tee $1 + i32.const 0 i32.store local.get $1 - local.get $0 - i32.load - local.tee $4 + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer local.get $1 local.get $0 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - local.get $3 - i32.sub i32.const 3 - i32.shl - i32.store offset=8 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) - (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 - i32.const 4 local.get $0 + local.tee $3 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.set $0 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $2 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -43946,22 +60039,22 @@ i32.gt_s select else - local.get $1 local.get $2 - local.get $1 + local.get $4 local.get $2 + local.get $4 i32.lt_s select end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 11 + i32.const 8 call $~lib/rt/itcms/__new local.tee $1 i32.store local.get $1 - local.get $0 + local.get $3 i32.load local.tee $4 i32.store @@ -43969,23 +60062,23 @@ local.get $4 call $~lib/rt/itcms/__link local.get $1 - local.get $0 - i32.load offset=4 local.get $3 - i32.const 3 + i32.load offset=4 + local.get $0 + i32.const 2 i32.shl i32.add i32.store offset=4 local.get $1 local.get $2 - local.get $3 + local.get $0 + local.get $0 local.get $2 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub - i32.const 3 + i32.const 2 i32.shl i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -43994,35 +60087,61 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 - i32.const 4 local.get $0 + local.tee $3 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.set $0 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $2 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -44031,22 +60150,22 @@ i32.gt_s select else - local.get $1 local.get $2 - local.get $1 + local.get $4 local.get $2 + local.get $4 i32.lt_s select end local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/itcms/__new local.tee $1 i32.store local.get $1 - local.get $0 + local.get $3 i32.load local.tee $4 i32.store @@ -44054,23 +60173,23 @@ local.get $4 call $~lib/rt/itcms/__link local.get $1 - local.get $0 - i32.load offset=4 local.get $3 - i32.const 2 + i32.load offset=4 + local.get $0 + i32.const 3 i32.shl i32.add i32.store offset=4 local.get $1 local.get $2 - local.get $3 + local.get $0 + local.get $0 local.get $2 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub - i32.const 2 + i32.const 3 i32.shl i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -44079,1029 +60198,877 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz + i32.const 15924 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7296 - return + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - select - local.tee $2 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 0 i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1696 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1696 + i32.store + end local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa_dec_simple local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end + call $~lib/typedarray/Float64Array#sort global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/__newArray (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $5 i32.const 0 i32.store - i32.const 0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 local.get $1 - local.get $3 - i32.lt_s - select - i32.const 1 i32.shl local.tee $4 + local.set $6 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.set $1 local.get $3 - local.get $1 - local.get $1 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - 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 7072 - return + local.get $1 + local.get $3 + local.get $6 + call $~lib/memory/memory.copy end - i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq + local.get $5 local.get $1 - select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 + i32.store + i32.const 16 + local.get $2 call $~lib/rt/itcms/__new local.tee $2 + local.get $1 i32.store local.get $2 - local.get $0 local.get $1 - i32.add - local.get $3 - call $~lib/memory/memory.copy + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + 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 $2 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result 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 - call $~stack_check + 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 $1 - i32.const 1 - i32.sub + local.get $0 local.tee $3 + i32.load offset=8 + local.set $4 + local.get $1 i32.const 0 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + if (result i32) + local.get $1 + local.get $4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7072 - return + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - i32.mul - i32.const 11 + local.set $0 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $4 i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + i32.const 0 local.get $1 + i32.const 0 + i32.gt_s + select + else local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + local.get $3 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 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.shl - i32.add - local.get $0 + 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.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 local.get $3 i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $2 + local.get $3 i32.add - local.tee $0 + local.tee $2 + i32.const 0 + local.get $2 + i32.const 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 + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result 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 - call $~stack_check + 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 + i32.const 4 local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.load offset=8 + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7296 - return + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - i32.const 1 + i32.const 12 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 local.get $0 + i32.load offset=4 + i32.add + i32.store offset=4 local.get $1 - call $~lib/util/number/utoa_dec_simple + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 + i32.const 4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 local.get $1 - 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 - return - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + if (result i32) local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $2 i32.add - local.tee $0 + local.tee $1 + i32.const 0 + local.get $1 + i32.const 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 + select + else local.get $1 - return + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 $1 + i32.const 4 + local.get $0 + i32.load offset=8 i32.const 1 - i32.sub - local.tee $3 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 + local.get $1 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 - return - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load16_s - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + if (result i32) local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $2 i32.add - local.tee $0 + local.tee $1 + i32.const 0 + local.get $1 + i32.const 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 + select + else local.get $1 - return + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 $1 + i32.const 4 + local.get $0 + i32.load offset=8 i32.const 1 - i32.sub - local.tee $3 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 + local.get $1 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 - return - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load16_u - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + if (result i32) local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 i32.add - local.tee $0 + local.tee $1 + i32.const 0 + local.get $1 + i32.const 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 + select + else local.get $1 - return + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 + i32.const 4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 local.get $1 - 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 - return - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + if (result i32) local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 i32.add - local.tee $0 + local.tee $1 + i32.const 0 + local.get $1 + i32.const 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 + select + else local.get $1 - return + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 + i32.const 4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 local.get $1 - 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 - return - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + if (result i32) local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 i32.add - local.tee $0 + local.tee $1 + i32.const 0 + local.get $1 + i32.const 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 + select + else local.get $1 - return + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/util/number/itoa64 (param $0 i64) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -45109,418 +61076,295 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i64.eqz + i32.const 15924 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7296 - return + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i64.const 0 - local.get $0 - i64.sub - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 4 local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s select - local.tee $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $4 - call $~lib/util/number/decimalCount32 - local.get $3 - i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store local.get $2 - local.get $4 + i32.add + local.tee $1 + i32.const 0 local.get $1 - call $~lib/util/number/utoa_dec_simple + i32.const 0 + i32.gt_s + select else - local.get $0 - call $~lib/util/number/decimalCount64High - local.get $3 - i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store local.get $2 - local.get $0 local.get $1 - call $~lib/util/number/utoa_dec_simple - end - local.get $3 - if local.get $2 - i32.const 45 - i32.store16 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (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 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 + i32.const 4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 local.get $1 - 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 - return - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - 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 $3 - i32.const 7420 - 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 $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + if (result i32) local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 i32.add - local.tee $0 + local.tee $1 + i32.const 0 + local.get $1 + i32.const 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 + select + else local.get $1 - return + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s + local.get $0 + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7072 + i32.const 7296 return end - block $folding-inner0 - local.get $4 - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + 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 - i64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 - local.get $3 - 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/utoa64 - end - local.get $3 - i64.const 4294967295 - i64.le_u - if - local.get $3 - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - 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 $1 - call $~lib/util/number/utoa_dec_simple - else - local.get $3 - call $~lib/util/number/decimalCount64High - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/number/utoa_dec_simple - 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 $4 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 20 - i32.add - i32.mul - i32.const 20 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - 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 $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end + 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 - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + else local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return + 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/utoa32_dec_lut + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -45528,72 +61372,108 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result 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 - call $~stack_check + 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 + i32.const 0 local.get $0 - f64.const 0 - f64.eq + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + local.tee $1 + local.get $1 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 + 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 7504 + i32.const 7072 return end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne + i32.const 0 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.eq + local.get $1 + select if - local.get $0 - local.get $0 - f64.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7536 - return - end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7568 - i32.const 7616 local.get $0 - f64.const 0 - f64.lt - select return end - i32.const 7648 - local.get $0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new local.tee $2 i32.store local.get $2 - i32.const 7648 + local.get $0 local.get $1 + i32.add + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -45601,284 +61481,184 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/utoa32 (param $0 i32) (result 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 - call $~stack_check + 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 $1 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s + local.get $0 + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7072 + i32.const 7296 return end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if + 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.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $1 + local.get $0 + call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/dtoa (param $0 f64) (result 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 - call $~stack_check + 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 $1 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s + local.get $0 + f64.const 0 + f64.eq if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 7072 + i32.const 8960 return end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $0 - f64.load - call $~lib/util/number/dtoa - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 7420 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $4 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7424 - local.get $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 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if local.get $0 - local.get $3 - 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 + local.get $0 + f64.ne if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8992 + return end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + i32.const 9024 + i32.const 9072 + local.get $0 + f64.const 0 + f64.lt + select return end + i32.const 9104 + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 9104 + local.get $1 + call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) @@ -45886,7 +61666,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 @@ -45917,99 +61707,23 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $3 - local.get $1 - i32.lt_u + i32.const 15924 + i32.lt_s if - i32.const 1360 - i32.const 1632 - i32.const 1826 - i32.const 5 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - i32.const -1 - i32.eq - if (result i32) - local.get $3 - local.get $1 - i32.sub - else - i32.const 1056 - i32.const 1632 - i32.const 1835 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.set $2 - else - local.get $3 - local.get $1 - local.get $2 - i32.add - i32.lt_s - if - i32.const 1056 - i32.const 1632 - i32.const 1840 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - i32.store - local.get $3 - local.get $0 - call $~lib/rt/itcms/__link - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $0 - local.get $1 - i32.add - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index 7cda0d1cc4..cd83ce724a 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -1,8 +1,8 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (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_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -35,15 +35,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -101,170 +92,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17868 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17868 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1120 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1440 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -552,12 +527,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -911,7 +886,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -974,7 +954,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1054,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17868 i32.ge_u if @@ -1064,19 +1049,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1093,11 +1078,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1107,10 +1095,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1177,23 +1167,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 + (local $4 i32) + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1203,18 +1245,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1222,15 +1264,15 @@ unreachable end end - local.get $0 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 $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1257,22 +1299,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1281,32 +1323,32 @@ local.get $1 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store local.get $1 i32.const 4 i32.add - local.tee $0 + local.tee $2 local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $0 + local.get $2 local.get $1 i32.load i32.const -4 @@ -1318,70 +1360,34 @@ i32.store end local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $1 global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 global.get $~lib/rt/itcms/total local.get $1 i32.load @@ -1433,72 +1439,108 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17868 - i32.sub + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1484 + 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 17868 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $super-inline/Foo#constructor + global.set $super-inline/foo + global.get $~lib/memory/__stack_pointer + global.get $super-inline/foo + local.tee $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + drop + 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 1484 + 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 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $super-inline/Foo#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $super-inline/bar + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $super-inline/bar + i32.store + local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17888 + i32.const 17936 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1168 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1200 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $super-inline/Foo#constructor - global.set $super-inline/foo - global.get $~lib/memory/__stack_pointer - global.get $super-inline/foo - local.tee $0 - i32.store - local.get $0 - i32.const 8 - i32.sub - i32.load - drop + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $super-inline/Foo#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $super-inline/Foo#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $super-inline/bar - global.get $~lib/memory/__stack_pointer - global.get $super-inline/bar - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~stack_check global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1510,13 +1552,6 @@ call $~lib/builtins/abort unreachable end - ) - (func $super-inline/Foo#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 i32.store diff --git a/tests/compiler/switch.optimized.wat b/tests/compiler/switch.optimized.wat index b65009f41b..f39cac4ed5 100644 --- a/tests/compiler/switch.optimized.wat +++ b/tests/compiler/switch.optimized.wat @@ -1,401 +1,6 @@ (module - (type $i32_=>_i32 (func (param i32) (result 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))) (memory $0 1) (data (i32.const 1036) ",") (data (i32.const 1048) "\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") (export "memory" (memory $0)) - (start $~start) - (func $switch/doSwitch (param $0 i32) (result i32) - block $case4|0 - block $case2|0 - local.get $0 - i32.const 1 - i32.ne - if - local.get $0 - i32.eqz - br_if $case2|0 - local.get $0 - i32.const 2 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.or - br_if $case4|0 - br $case2|0 - end - i32.const 1 - return - end - i32.const 0 - return - end - i32.const 23 - ) - (func $switch/doSwitchDefaultOmitted (param $0 i32) (result i32) - block $break|0 - block $case2|0 - local.get $0 - i32.const 1 - i32.ne - if - local.get $0 - i32.const 2 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.or - br_if $case2|0 - br $break|0 - end - i32.const 1 - return - end - i32.const 23 - return - end - i32.const 0 - ) - (func $switch/doSwitchBreakCase (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.ne - if - i32.const 2 - return - end - i32.const 1 - ) - (func $switch/doSwitchBreakDefault (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.eq - if - i32.const 1 - return - end - i32.const 2 - ) - (func $start:switch - i32.const 0 - call $switch/doSwitch - if - i32.const 0 - i32.const 1056 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitch - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitch - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitch - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitch - if - i32.const 0 - i32.const 1056 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitch - if - i32.const 0 - i32.const 1056 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitch - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitch - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitch - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitch - if - i32.const 0 - i32.const 1056 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchDefaultOmitted - if - i32.const 0 - i32.const 1056 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchDefaultOmitted - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchDefaultOmitted - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitchDefaultOmitted - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitchDefaultOmitted - if - i32.const 0 - i32.const 1056 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakCase - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakCase - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakCase - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakDefault - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakCase - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakCase - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakCase - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakDefault - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:switch - ) ) diff --git a/tests/compiler/tablebase.optimized.wat b/tests/compiler/tablebase.optimized.wat index b82954751a..91efd74803 100644 --- a/tests/compiler/tablebase.optimized.wat +++ b/tests/compiler/tablebase.optimized.wat @@ -11,6 +11,7 @@ (export "memory" (memory $0)) (start $~start) (func $~start + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -27,9 +28,10 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store i32.const 1056 diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index 28c23cc739..d67308700c 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -1,10 +1,10 @@ (module - (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (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_=>_none (func (param 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))) @@ -54,57 +54,60 @@ (data (i32.const 2072) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") (data (i32.const 2124) "\1c") (data (i32.const 2136) "\01\00\00\00\02\00\00\000") - (data (i32.const 2156) "\\") - (data (i32.const 2168) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 2252) "\1c") - (data (i32.const 2264) "\01\00\00\00\02\00\00\001") - (data (i32.const 2284) ",") - (data (i32.const 2296) "\03\00\00\00\14\00\00\00`\04\00\00\00\00\00\00`\04\00\00\00\00\00\00`\04") - (data (i32.const 2332) "\1c") - (data (i32.const 2344) "\01\00\00\00\04\00\00\001\002") - (data (i32.const 2364) ",") - (data (i32.const 2376) "\03\00\00\00\14\00\00\00\c0\06\00\00\00\00\00\00\e0\06\00\00\00\00\00\00\00\07") - (data (i32.const 2412) ",") - (data (i32.const 2424) "\01\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)") - (data (i32.const 2460) "\1c") - (data (i32.const 2472) "\03\00\00\00\0c\00\00\00`\04\00\00\00\00\00\00`\04") - (data (i32.const 2492) "\1c") - (data (i32.const 2504) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 2524) "\1c") - (data (i32.const 2536) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 2556) ",") - (data (i32.const 2568) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 2604) ",") - (data (i32.const 2616) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 2712) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#__uset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) local.get $0 local.get $1 i32.const 2 @@ -280,6 +271,7 @@ local.get $2 i32.store local.get $2 + local.tee $1 if local.get $0 i32.eqz @@ -292,7 +284,7 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $2 + local.get $1 i32.const 20 i32.sub local.tee $1 @@ -309,8 +301,6 @@ i32.const 3 i32.and local.tee $2 - local.set $3 - local.get $2 global.get $~lib/rt/itcms/white i32.eqz i32.eq @@ -322,7 +312,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $3 + local.get $2 i32.const 3 i32.eq select @@ -341,7 +331,9 @@ call $~lib/rt/itcms/__visit i32.const 1392 call $~lib/rt/itcms/__visit - i32.const 2176 + i32.const 2576 + call $~lib/rt/itcms/__visit + i32.const 3632 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -381,16 +373,6 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -696,12 +678,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -951,10 +933,10 @@ if unreachable end - i32.const 20576 + i32.const 22032 i32.const 0 i32.store - i32.const 22144 + i32.const 23600 i32.const 0 i32.store loop $for-loop|0 @@ -965,7 +947,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 20576 + i32.const 22032 i32.add i32.const 0 i32.store offset=4 @@ -983,7 +965,7 @@ i32.add i32.const 2 i32.shl - i32.const 20576 + i32.const 22032 i32.add i32.const 0 i32.store offset=96 @@ -1001,13 +983,13 @@ br $for-loop|0 end end - i32.const 20576 - i32.const 22148 + i32.const 22032 + i32.const 23604 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 20576 + i32.const 22032 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1055,7 +1037,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1086,7 +1073,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 20572 + i32.const 22028 i32.lt_u if local.get $0 @@ -1118,7 +1105,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1176,7 +1168,7 @@ unreachable end local.get $0 - i32.const 20572 + i32.const 22028 i32.lt_u if local.get $0 @@ -1198,8 +1190,8 @@ local.get $0 i32.const 4 i32.add - local.tee $1 - i32.const 20572 + local.tee $0 + i32.const 22028 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1208,19 +1200,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1237,11 +1229,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1251,10 +1246,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1275,28 +1272,28 @@ i32.shr_u local.set $1 else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 local.get $1 i32.const 536870910 i32.lt_u - select - local.tee $1 + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $1 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1393,11 +1390,80 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (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 $1 + (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 i32.const 1073741820 i32.ge_u if @@ -1408,50 +1474,54 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.get $1 + local.get $3 + local.get $2 i32.const 12 i32.le_u - select + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if - i32.const 4 + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $2 + end + i32.const 4 memory.size - local.tee $1 + local.tee $6 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $3 i32.load offset=1568 i32.ne i32.shl - local.get $2 - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $2 - local.get $2 - i32.const 536870910 - i32.lt_u - select i32.add i32.const 65535 i32.add @@ -1459,18 +1529,18 @@ 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 + 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 $3 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -1478,18 +1548,18 @@ unreachable end end - local.get $0 - local.get $1 + local.get $3 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $4 i32.eqz if i32.const 0 @@ -1501,7 +1571,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1514,12 +1584,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $4 i32.load - local.set $3 + local.set $6 local.get $2 i32.const 4 i32.add @@ -1533,54 +1603,54 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and local.get $2 i32.sub - local.tee $4 + local.tee $5 i32.const 16 i32.ge_u if - local.get $1 + local.get $4 local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and i32.or i32.store local.get $2 - local.get $1 + local.get $4 i32.const 4 i32.add i32.add local.tee $2 - local.get $4 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $3 + local.get $4 + local.get $6 i32.const -2 i32.and i32.store - local.get $1 + local.get $4 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $2 + local.get $4 i32.load i32.const -4 i32.and i32.add - local.get $0 - local.get $1 + local.get $2 + local.get $4 i32.load i32.const -4 i32.and @@ -1590,125 +1660,164 @@ i32.and i32.store end + local.get $4 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) + 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 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.add i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $1 i32.add - local.tee $0 + local.tee $5 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 $2 + local.tee $3 i32.add i32.const 28 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=4 - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 - 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 $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $5 i32.const 0 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 - local.get $0 + local.get $5 i32.const 0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 0 i32.store - 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 $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1716,7 +1825,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1749,2493 +1858,3553 @@ end end end + local.get $2 ) - (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) + 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 1073741804 - i32.ge_u + i32.const 3 + i32.and + i32.eqz 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 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 local.get $2 - call $~lib/rt/itcms/step + i32.const 16 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 + br $while-continue|1 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 i32.add - global.set $~lib/rt/itcms/threshold + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 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 - local.get $2 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - 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/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 $0 - local.get $1 - i32.lt_u + i32.const 4 + i32.and if + local.get $0 local.get $1 - i32.const 7 - i32.and + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 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 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 + i32.const 3 + i32.and 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 + br_table $case0|2 $case1|2 $case2|2 $break|2 end - end - end - loop $while-continue|2 - local.get $4 - if + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 i32.const 1 i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add local.set $0 local.get $1 local.tee $3 - i32.const 1 + i32.const 2 i32.add local.set $1 - local.get $2 + local.get $4 local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 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 + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $5 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=5 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $5 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 loop $while-continue|4 - local.get $4 - i32.const 8 + local.get $2 + i32.const 18 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.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $5 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=6 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $5 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i64.load - i64.store + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|4 end end + br $break|2 end + local.get $1 + i32.load + local.set $5 + 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 loop $while-continue|5 - local.get $4 + local.get $2 + i32.const 19 + i32.ge_u if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 local.get $0 - i32.add local.get $1 - local.get $4 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $5 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=7 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 i32.add - i32.load8_u - i32.store8 + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $while-continue|5 end end end end - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result 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 - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + local.get $2 + i32.const 16 + i32.and + if + local.get $0 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - i32.shr_u + i32.add + local.tee $0 + local.get $1 i32.const 1 - i32.shl - local.tee $4 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $2 - 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 $0 - 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 $0 - br $__inlined_func$~lib/string/String#concat - end - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 i32.const 1 - call $~lib/rt/itcms/__new + i32.add local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $3 - call $~lib/memory/memory.copy + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $3 + i32.const 1 i32.add + local.tee $0 local.get $1 - local.get $4 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinReferenceArray<~lib/string/String> - ) - (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.eqz - i32.const 1 - local.get $0 - select - 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.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + i32.const 1 + i32.add local.tee $0 - i32.const 4 - i32.ge_u - select - 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 - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $3 - i32.load16_u - local.tee $2 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - 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 - i32.const 0 - end - i32.eqz - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 + local.get $1 i32.const 1 - i32.sub - local.tee $2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - i32.shl i32.add + local.tee $0 local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 + i32.const 1 i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u local.tee $1 - br_if $do-continue|0 - end - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2144 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end - i32.const 0 - local.get $0 - i32.sub - local.get $0 + i32.load8_u + i32.store8 local.get $0 - i32.const 31 - i32.shr_u + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add local.tee $1 - select - local.tee $2 - call $~lib/util/number/decimalCount32 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 + i32.const 1 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - i32.shl + i32.add + local.tee $0 + local.get $1 i32.const 1 - call $~lib/rt/itcms/__new + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add local.tee $0 - i32.store + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa_dec_simple + i32.const 1 + i32.add + local.tee $0 local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i64) + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end local.get $2 - local.get $0 - i64.sub - local.set $8 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end local.get $2 - i64.const 1 - i32.const 0 - local.get $3 - i32.sub - local.tee $9 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $11 - i64.and - local.set $6 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end local.get $2 - local.get $9 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.set $7 - loop $while-continue|0 - local.get $7 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $4 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 2 + i32.add + local.set $1 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + 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 - i32.gt_s + local.get $4 + i32.const 1 + i32.shl + i32.sub + i32.le_u if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $1 - i32.const 1000000000 - i32.div_u - local.set $3 - local.get $1 - i32.const 1000000000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 100000000 - i32.div_u - local.set $3 - local.get $1 - i32.const 100000000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 10000000 - i32.div_u - local.set $3 - local.get $1 - i32.const 10000000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 1000000 - i32.div_u - local.set $3 - local.get $1 - i32.const 1000000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 100000 - i32.div_u - local.set $3 - local.get $1 - i32.const 100000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 10000 - i32.div_u - local.set $3 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 1000 - i32.div_u - local.set $3 - local.get $1 - i32.const 1000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 10 - i32.div_u - local.set $3 - local.get $1 - i32.const 10 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - local.set $3 - i32.const 0 - local.set $1 - br $break|1 - end - i32.const 0 - local.set $3 - end - local.get $3 - local.get $5 - i32.or - if - local.get $5 - i32.const 1 - i32.shl - i32.const 2656 - i32.add - local.get $3 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $6 + local.get $0 local.get $1 - i64.extend_i32_u - local.get $9 - i64.extend_i32_s - i64.shl - i64.add - local.tee $0 local.get $4 - i64.le_u + 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 - local.get $7 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 3584 - i32.add - i64.load32_u - local.get $9 - i64.extend_i32_s - i64.shl - local.set $2 - local.get $5 - i32.const 1 - i32.shl - i32.const 2654 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $0 - i64.sub - local.get $0 - local.get $2 - i64.add - local.tee $6 - local.get $8 - i64.sub - i64.gt_u - local.get $6 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $2 - local.get $4 - local.get $0 - i64.sub - i64.le_u - i32.const 0 + loop $while-continue|0 local.get $0 - local.get $8 - i64.lt_u - select - select + i32.const 7 + i32.and if - local.get $1 + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 i32.const 1 i32.sub - local.set $1 + 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 - i64.add + 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 - br $while-continue|3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 end end - local.get $3 - local.get $1 - i32.store16 - local.get $5 - return end - br $while-continue|0 - end - end - local.get $9 - i64.extend_i32_s - local.set $0 - loop $while-continue|4 - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $6 - i64.const 10 - i64.mul - local.tee $2 - local.get $0 - i64.shr_u - local.tee $6 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $5 - i32.const 1 - i32.shl - i32.const 2656 - i32.add - local.get $6 - i32.wrap_i64 - i32.const 65535 + 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 - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 + 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 - local.get $7 + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#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.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $5 + 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 5644 + i32.lt_s + if + i32.const 22048 + i32.const 22096 i32.const 1 - i32.sub - local.set $7 - local.get $4 - local.get $2 - local.get $11 - i64.and - local.tee $6 - i64.le_u - br_if $while-continue|4 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $7 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store local.get $6 - local.set $0 - local.get $8 i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 3584 - i32.add - i64.load32_u - i64.mul - local.set $2 - local.get $5 - i32.const 1 - i32.shl - i32.const 2654 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - loop $while-continue|6 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinStringArray + local.get $5 i32.const 1 - local.get $2 - local.get $0 - i64.sub - local.get $0 - local.get $10 - i64.add + i32.sub local.tee $6 - local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $6 - i64.gt_u - select - i32.const 0 - local.get $10 - local.get $4 - local.get $0 - i64.sub - i64.le_u i32.const 0 - local.get $0 - local.get $2 - i64.lt_u - select - select + i32.lt_s if - local.get $1 - i32.const 1 - i32.sub - local.set $1 + 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 - local.get $10 - i64.add - local.set $0 - br $while-continue|6 + 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 - end - local.get $3 - local.get $1 - i32.store16 - local.get $5 - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) loop $for-loop|0 - local.get $1 local.get $3 + local.get $5 i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 + local.get $3 + i32.const 2 i32.shl i32.add - i32.const 48 - i32.store16 - local.get $1 + 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 $1 + local.set $3 br $for-loop|0 end end - local.get $0 - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $6 + i32.const 1116 + i32.load i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 + i32.shr_u + local.tee $5 + i32.mul i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 + local.set $3 + loop $for-loop|1 local.get $3 - i32.const -6 - i32.gt_s - select - if (result i32) + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 local.get $3 - i32.sub - local.tee $3 - i32.const 1 + i32.const 2 i32.shl i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 + i32.load + local.tee $4 + i32.store offset=4 + local.get $4 + if local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 + local.get $1 i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $4 + i32.const 20 i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 + i32.load offset=16 i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple + i32.shr_u + local.tee $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 + local.get $4 i32.add + local.set $1 + end + local.get $5 + if + local.get $2 local.get $1 i32.const 1 i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 + i32.const 1120 + local.get $5 i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 + i32.shl + call $~lib/memory/memory.copy local.get $1 + local.get $5 i32.add - i32.const 2 - i32.add + local.set $1 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 end end - end - ) - (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $8 - if (result f64) - i32.const 2656 - i32.const 45 - i32.store16 + global.get $~lib/memory/__stack_pointer local.get $0 - f64.neg - else + 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 - i64.reinterpret_f64 - local.tee $3 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $6 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $3 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $1 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $3 - i64.clz - i32.wrap_i64 - local.set $2 - local.get $3 - local.get $2 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $6 - i32.const 1 - local.get $6 - select - i32.const 1075 - i32.sub - local.tee $6 - i32.const 1 - i32.sub local.get $2 - i32.sub - local.set $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 - i64.const 4503599627370496 - i64.eq + i32.eqz i32.const 1 - i32.add - local.tee $7 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $6 - local.get $7 - i32.sub - local.get $2 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $2 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_f64_s - local.tee $2 local.get $0 - local.get $2 - f64.convert_i32_s - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $2 - i32.const 3 - i32.shl - local.tee $7 + select + if + i32.const 0 + return + end + local.get $0 + i32.const 20 i32.sub - global.set $~lib/util/number/_K - local.get $7 - i32.const 2712 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $2 + i32.load offset=16 i32.const 1 - i32.shl - i32.const 3408 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $4 - i64.const 32 - i64.shr_u - local.set $3 - local.get $4 - i64.const 4294967295 - i64.and + i32.shr_u local.tee $4 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $10 - i64.mul - local.get $4 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $5 - local.get $8 - i32.const 1 - i32.shl - i32.const 2656 - i32.add - local.get $3 - local.get $1 - local.get $1 - i64.clz - i32.wrap_i64 - local.tee $2 - i64.extend_i32_s - i64.shl - local.tee $1 - i64.const 32 - i64.shr_u - local.tee $9 - i64.mul - local.get $4 - local.get $9 - i64.mul - local.get $4 - local.get $1 - i64.const 4294967295 - i64.and - local.tee $1 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $9 - i64.const 32 - i64.shr_u - i64.add local.get $1 - local.get $3 - i64.mul - local.get $9 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $7 - local.get $6 - local.get $2 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $3 - local.get $10 - i64.mul - local.get $5 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $11 - i64.mul - local.get $5 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $1 - local.get $7 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 + i32.const 20 i32.sub - local.get $1 - local.get $3 - global.get $~lib/util/number/_frc_minus - local.tee $1 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $4 - local.get $5 - i64.mul - local.get $4 - local.get $1 - i64.const 4294967295 - i64.and - local.tee $4 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $1 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $4 - i64.mul - local.get $1 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $8 - call $~lib/util/number/genDigits - local.get $8 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $8 - i32.add - ) - (func $~lib/number/F64#toString (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/dtoa + 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 - f64.const 0 - f64.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2512 - local.set $1 - br $__inlined_func$~lib/util/number/dtoa + local.set $2 + local.get $1 + local.set $3 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne if + loop $do-continue|0 + local.get $2 + i64.load + local.get $3 + 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 $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 local.get $0 - local.get $0 - f64.ne + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.load16_u + local.tee $1 + local.get $3 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $1 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $2 + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2544 - local.set $1 - br $__inlined_func$~lib/util/number/dtoa + local.set $2 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|1 end - global.get $~lib/memory/__stack_pointer + end + i32.const 0 + end + 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 + 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 - global.set $~lib/memory/__stack_pointer - i32.const 2576 - i32.const 2624 - local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $__inlined_func$~lib/util/number/dtoa + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 2156 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2156 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 - call $~lib/util/number/dtoa_core + local.get $2 + i32.const 2 + i32.sub + local.tee $2 i32.const 1 i32.shl - local.set $2 - global.get $~lib/memory/__stack_pointer + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2156 + 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 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store + i32.shl + i32.add local.get $1 - i32.const 2656 + i32.const 2 + i32.shl + i32.const 2156 + i32.add + i32.load + i32.store + else + local.get $0 local.get $2 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 + i32.sub + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 48 + i32.add + i32.store16 end - local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - block $invalid - block $templateliteral/Ref - block $~lib/staticarray/StaticArray<~lib/string/String> - 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 $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $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 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - return - end - return - end - unreachable - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - i32.const 1232 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - memory.size - i32.const 16 - i32.shl - i32.const 20572 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1440 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1472 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $templateliteral/test_string - call $templateliteral/test_integer - call $templateliteral/test_float - call $templateliteral/test_ref - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 4188 - i32.lt_s - if - i32.const 20592 - i32.const 20640 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i64) + local.get $2 + local.get $0 + i64.sub + local.set $8 + local.get $2 + i64.const 1 i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 + local.get $3 i32.sub - local.tee $2 - 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 - return - end + local.tee $9 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $11 + i64.and + local.set $6 local.get $2 - 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 1120 - local.get $0 - select - return - end - i32.const 1120 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=4 - i32.const 1116 - i32.load - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 + local.get $0 + i64.shr_u + i32.wrap_i64 + local.tee $1 + local.set $3 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 100 + i32.lt_u + if (result i32) local.get $3 - i32.const 2 - i32.shl + i32.const 10 + i32.ge_u + i32.const 1 i32.add - i32.load - local.tee $4 - i32.store - local.get $4 - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $4 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1120 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end + else local.get $3 - i32.const 1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u i32.add - local.set $3 - br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store - local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $templateliteral/test_string - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1152 - i32.store offset=16 - i32.const 1152 + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $1 + i32.const 1000000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 100000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 10000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 10000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 1000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100000 + i32.div_u + local.set $3 + local.get $1 + i32.const 100000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 10000 + i32.div_u + local.set $3 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 1000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100 + i32.div_u + local.set $3 + local.get $1 + i32.const 100 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 10 + i32.div_u + local.set $3 + local.get $1 + i32.const 10 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + local.set $3 + i32.const 0 + local.set $1 + br $break|1 + end + i32.const 0 + local.set $3 + end + local.get $3 + local.get $5 + i32.or + if + local.get $5 + i32.const 1 + i32.shl + i32.const 4112 + i32.add + local.get $3 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $6 + local.get $1 + i64.extend_i32_u + local.get $9 + i64.extend_i32_s + i64.shl + i64.add + local.tee $0 + local.get $4 + i64.le_u + if + local.get $7 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 5040 + i32.add + i64.load32_u + local.get $9 + i64.extend_i32_s + i64.shl + local.set $2 + local.get $5 + i32.const 1 + i32.shl + i32.const 4110 + i32.add + local.tee $7 + i32.load16_u + local.set $3 + loop $while-continue|3 + local.get $2 + local.get $4 + local.get $0 + i64.sub + i64.le_u + i32.const 0 + local.get $0 + local.get $8 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $8 + local.get $0 + i64.sub + local.get $0 + local.get $2 + i64.add + local.tee $6 + local.get $8 + i64.sub + i64.gt_u + local.get $6 + local.get $8 + i64.lt_u + select + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.get $2 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $7 + local.get $3 + i32.store16 + local.get $5 + return + end + br $while-continue|0 + end + end + local.get $9 + i64.extend_i32_s + local.set $0 + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $6 + i64.const 10 + i64.mul + local.tee $2 + local.get $0 + i64.shr_u + local.tee $6 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $5 + i32.const 1 + i32.shl + i32.const 4112 + i32.add + local.get $6 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $4 + local.get $2 + local.get $11 + i64.and + local.tee $6 + i64.le_u + br_if $while-continue|4 + end + local.get $7 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $6 + local.set $0 + local.get $8 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 5040 + i32.add + i64.load32_u + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.shl + i32.const 4110 + i32.add + local.tee $7 + i32.load16_u + local.set $3 + loop $while-continue|6 + local.get $10 + local.get $4 + local.get $0 + i64.sub + i64.le_u + i32.const 0 + local.get $0 + local.get $2 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $2 + local.get $0 + i64.sub + local.get $0 + local.get $10 + i64.add + local.tee $6 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $6 + i64.gt_u + select + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.get $10 + i64.add + local.set $0 + br $while-continue|6 + end + end + local.get $7 + local.get $3 + i32.store16 + local.get $5 + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + i32.eqz + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $4 + i32.const 21 + i32.le_s + i32.const 0 + local.get $1 + local.get $4 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $4 + i32.const 2 + i32.add + else + local.get $4 + i32.const 21 + i32.le_s + i32.const 0 + local.get $4 + i32.const 0 + i32.gt_s + select + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $4 + i32.const 0 + i32.le_s + i32.const 0 + local.get $4 + i32.const -6 + i32.gt_s + select + if (result i32) + local.get $0 + i32.const 2 + local.get $4 + i32.sub + local.tee $5 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $5 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if (result i32) + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $3 + i32.const 4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + 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.set $1 + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 offset=4 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + call $~lib/memory/memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $3 + i32.const 4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $5 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + 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 $2 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $5 + select + i32.store16 offset=4 + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.add + end + end + end + end + ) + (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + local.get $0 + f64.const 0 + f64.lt + local.tee $8 + if (result f64) + i32.const 4112 + i32.const 45 + i32.store16 + local.get $0 + f64.neg + else + local.get $0 + end + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $7 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $2 + i64.const 4503599627370495 + i64.and + i64.add + local.tee $1 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $2 + i64.clz + i32.wrap_i64 + local.set $4 + local.get $2 + local.get $4 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $7 i32.const 1 - i32.const 1056 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 1152 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=20 - i32.const 1152 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.get $7 + select + i32.const 1075 + i32.sub + local.tee $7 + i32.const 1 + i32.sub + local.get $4 + i32.sub + local.set $4 + local.get $1 + local.get $1 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $5 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $7 + local.get $5 + i32.sub + local.get $4 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $4 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + local.tee $4 + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $0 + i32.trunc_f64_s + local.tee $5 + local.get $0 + local.get $5 + f64.convert_i32_s + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $5 + i32.const 3 + i32.shl + local.tee $9 + i32.sub + global.set $~lib/util/number/_K + local.get $9 + i32.const 4168 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $5 + i32.const 1 + i32.shl + i32.const 4864 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $3 + i64.const 32 + i64.shr_u + local.set $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $3 + global.get $~lib/util/number/_frc_plus + local.tee $6 + i64.const 32 + i64.shr_u + local.tee $11 + i64.mul + local.get $3 + local.get $6 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $6 + local.get $8 + i32.const 1 + i32.shl + i32.const 4112 + i32.add + local.get $2 + local.get $1 + local.get $1 + i64.clz + i32.wrap_i64 + local.tee $5 + i64.extend_i32_s + i64.shl + local.tee $1 + i64.const 32 + i64.shr_u + local.tee $10 + i64.mul + local.get $3 + local.get $10 + i64.mul + local.get $3 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $1 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $10 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $2 + i64.mul + local.get $10 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $9 + local.get $7 + local.get $5 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $2 + local.get $11 + i64.mul + local.get $6 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $12 + i64.mul + local.get $6 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $1 + local.get $4 + local.get $9 + i32.add + i32.const -64 + i32.sub + local.get $1 + local.get $2 + global.get $~lib/util/number/_frc_minus + local.tee $1 + i64.const 32 + i64.shr_u + local.tee $6 + i64.mul + local.get $3 + local.get $6 + i64.mul + local.get $3 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $3 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $1 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $3 + i64.mul + local.get $1 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $8 + call $~lib/util/number/genDigits + local.get $8 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $8 + i32.add + ) + (func $~lib/number/F64#toString (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=12 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz + i32.const 5644 + i32.lt_s if - i32.const 0 - i32.const 1584 - i32.const 4 - i32.const 3 + i32.const 22048 + i32.const 22096 + i32.const 1 + i32.const 1 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 - i32.const 1648 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - 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.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/dtoa + local.get $0 + f64.const 0 + f64.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3968 + local.set $1 + br $__inlined_func$~lib/util/number/dtoa + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + local.get $0 + local.get $0 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4000 + local.set $1 + br $__inlined_func$~lib/util/number/dtoa + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4032 + i32.const 4080 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $__inlined_func$~lib/util/number/dtoa + end + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 4112 + 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 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 - i32.const 1824 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - 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.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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 + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $templateliteral/Ref + block $~lib/staticarray/StaticArray<~lib/string/String> + 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 $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $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 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + return + end + return end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer + unreachable ) - (func $templateliteral/test_integer + (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.store offset=8 - i32.const 1 - call $~lib/number/I32#toString - 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 - i32.const 1920 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2272 - i32.store offset=4 - local.get $0 - i32.const 2272 - call $~lib/string/String.__eq - i32.eqz + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~started if - i32.const 0 - i32.const 1584 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 2304 - i32.store offset=8 - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 2304 i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 2304 - i32.store offset=8 - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 2304 - i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 2304 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=16 - i32.const 2304 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 + global.set $~started + i32.const 1236 + i32.const 1232 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2352 - i32.store offset=4 - local.get $0 - i32.const 2352 - 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 2384 - i32.store offset=8 - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 2384 + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + memory.size + i32.const 16 + i32.shl + i32.const 22028 + i32.sub i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 2384 - i32.store offset=8 - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 2384 - i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 2384 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=16 - i32.const 2384 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/pinSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer - i32.const 2432 - i32.store offset=4 - local.get $0 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if + 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 + 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 + 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 + 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 i32.const 0 - i32.const 1584 - i32.const 15 + 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 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 - 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) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 2480 - 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 2480 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 2480 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=16 - i32.const 2480 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3648 - i32.store offset=4 - local.get $0 - i32.const 3648 - call $~lib/string/String.__eq - i32.eqz - if + 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 i32.const 0 - i32.const 1584 - i32.const 22 + 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 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 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3680 - 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 3680 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 3680 - 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 3680 - i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 3680 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=16 - i32.const 3680 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3728 - i32.store offset=4 - local.get $0 - i32.const 3728 - call $~lib/string/String.__eq - i32.eqz - if + 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 i32.const 0 - i32.const 1584 - i32.const 23 + 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 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 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3760 - 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 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 - 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 3760 - i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 3760 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - 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.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 24 + 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 + 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 $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 - call $~lib/builtins/abort - unreachable + 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 + 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 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 + return 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) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3888 - i32.store - local.get $0 - i32.load - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 3888 - local.get $0 - call $~lib/string/String.__concat + i32.const 22048 + i32.const 22096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (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.add + 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 $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.get $1 + 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 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 ) - (func $templateliteral/test_ref - (local $0 i32) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 + 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 i32.const 0 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $templateliteral/Ref#constructor - local.tee $1 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 3856 - i32.store offset=16 - 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 3856 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 3856 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=24 - i32.const 3856 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3920 - i32.store offset=12 local.get $0 - i32.const 3920 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2144 + return end global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=16 - 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 3952 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 3952 - 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 3952 - i32.const 3 + i32.const 0 local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=24 - i32.const 3952 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.sub local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4000 - i32.store offset=12 local.get $0 - i32.const 4000 - 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 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=16 - local.get $1 - call $templateliteral/Ref#toString - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=20 - i32.const 4048 + i32.add + local.tee $3 i32.const 1 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=16 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 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 4048 - i32.const 3 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=24 - i32.const 4048 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4096 - i32.store offset=12 + local.get $3 + call $~lib/util/number/utoa32_dec_lut local.get $1 - i32.const 4096 - 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 + local.get $0 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $templateliteral/Ref#constructor (param $0 i32) (result i32) (local $1 i32) @@ -4243,11 +5412,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check 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 $1 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 4 i32.const 4 call $~lib/rt/itcms/__new diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index a4267c8755..a82ded4ffe 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -3,7 +3,6 @@ (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 $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "\1c") @@ -46,15 +45,6 @@ (export "doThrow" (func $throw/doThrow)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -98,168 +88,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1392 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18140 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18140 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1392 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1728 + i32.load + i32.gt_u + if + i32.const 1488 + i32.const 1552 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1732 + i32.add + i32.load + i32.const 32 + i32.and end - local.get $1 + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 local.get $2 - i32.store offset=8 + i32.load offset=8 + local.set $1 + local.get $0 local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:next - end - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 1728 - i32.load - i32.gt_u - if - i32.const 1488 - i32.const 1552 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1732 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $2 - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $2 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -547,12 +523,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -670,223 +646,11 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) + (func $~lib/rt/itcms/step + (local $0 i32) (local $1 i32) (local $2 i32) - local.get $0 - i32.const 19716 - i32.lt_u - if - i32.const 0 - i32.const 1632 - i32.const 377 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -16 - i32.and - i32.const 19712 - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 4 - i32.add - i32.const 19724 - i32.gt_u - if - i32.const 0 - i32.const 1632 - i32.const 384 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 19708 - i32.eq - if (result i32) - local.get $0 - i32.load - local.set $2 - i32.const 19708 - else - i32.const 19724 - end - else - i32.const 19724 - end - local.tee $1 - i32.sub - local.tee $0 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $2 - i32.const 2 - i32.and - local.get $0 - i32.const 8 - i32.sub - local.tee $0 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 4 - i32.add - i32.add - local.tee $0 - i32.const 2 - i32.store - i32.const 19712 - local.get $0 - i32.store - i32.const 18144 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 18140 - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - memory.size - local.tee $2 - i32.const 1 - i32.lt_s - if (result i32) - i32.const 1 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 18144 - i32.const 0 - i32.store - i32.const 19712 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $1 - i32.const 23 - i32.lt_u - if - local.get $1 - i32.const 2 - i32.shl - i32.const 18144 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 18144 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 18144 - global.set $~lib/rt/tlsf/ROOT - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/itcms/step - (local $0 i32) - (local $1 i32) + (local $3 i32) block $folding-inner0 block $case2|0 block $case1|0 @@ -927,7 +691,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -990,7 +759,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1070,137 +844,245 @@ local.get $0 i32.const 4 i32.add - call $~lib/rt/tlsf/__free + local.tee $3 + i32.const 18140 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + memory.size + local.tee $0 + i32.const 1 + i32.lt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 18144 + i32.const 0 + i32.store + i32.const 19712 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 18144 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 16 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 18144 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + memory.size + i32.const 16 + i32.shl + local.tee $1 + i32.const 19716 + i32.lt_u + if + i32.const 0 + i32.const 1632 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const -16 + i32.and + i32.const 19712 + i32.load + local.tee $1 + if (result i32) + local.get $1 + i32.const 4 + i32.add + i32.const 19724 + i32.gt_u + if + i32.const 0 + i32.const 1632 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19708 + i32.eq + if (result i32) + local.get $1 + i32.load + local.set $2 + i32.const 19708 + else + i32.const 19724 + end + else + i32.const 19724 + end + local.tee $0 + i32.sub + local.tee $1 + i32.const 20 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + local.get $1 + i32.const 8 + i32.sub + local.tee $1 + i32.const 1 + i32.or + i32.or + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $0 + i32.const 4 + i32.add + i32.add + local.tee $1 + i32.const 2 + i32.store + i32.const 19712 + local.get $1 + i32.store + i32.const 18144 + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + i32.const 18144 + global.set $~lib/rt/tlsf/ROOT + end + global.get $~lib/rt/tlsf/ROOT + local.get $3 + i32.const 4 + i32.sub + local.set $0 + local.get $3 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $3 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end end return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.get $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state end ) - (func $start:throw + (func $throw/doThrow (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store offset=8 - 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 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - loop $while-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store offset=8 - i32.const 1248 - i32.const 1168 - i32.const 23 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1296 - i32.store offset=8 - br $while-continue|0 - end - end global.get $~lib/memory/__stack_pointer - i32.const 1328 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1344 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1440 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1584 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - memory.size - drop - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s + i32.const 1756 + i32.lt_s if - loop $while-continue|00 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - br $while-continue|00 - end - end - end - call $~lib/rt/itcms/step - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - br $while-continue|1 - end + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $throw/doThrow - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store i32.const 1696 @@ -1237,13 +1119,142 @@ unreachable ) (func $~start - call $start:throw - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - if + (local $0 i32) + (local $1 i32) + block $__inlined_func$start:throw + 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 1756 + 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 1056 + i32.store + local.get $0 + i32.const 1216 + i32.store offset=8 + local.get $0 + 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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1756 + 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 1056 + i32.store + loop $while-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=8 + i32.const 1248 + i32.const 1168 + i32.const 23 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=8 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1328 + i32.store offset=12 + local.get $0 + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/pinSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/toSpace + i32.const 1588 + i32.const 1584 + i32.store + i32.const 1592 + i32.const 1584 + i32.store + i32.const 1584 + global.set $~lib/rt/itcms/fromSpace + memory.size + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|00 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|00 + end + end + end + call $~lib/rt/itcms/step + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|1 + end + end + br $__inlined_func$start:throw + end i32.const 18160 i32.const 18208 i32.const 1 diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 19e3abd356..4e4e907e2c 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (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_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (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 $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -80,7 +80,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 local.get $1 i32.const 20 i32.sub @@ -94,36 +94,41 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 - i32.const 7 - i32.and + local.set $2 local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 + local.set $3 + local.get $4 local.tee $0 i32.const 4 i32.ge_u - select + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end if loop $do-continue|0 - local.get $3 + local.get $2 i64.load - local.get $1 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $1 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -136,33 +141,33 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 - local.get $1 + local.tee $1 + local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $1 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end @@ -170,15 +175,6 @@ end i32.eqz ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -232,170 +228,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1424 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 18220 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18220 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1424 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1552 + i32.const 1616 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 - local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1792 - i32.load - i32.gt_u - if - i32.const 1552 - i32.const 1616 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.shl - i32.const 1796 - i32.add - i32.load - i32.const 32 i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.or + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -683,12 +663,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -1042,7 +1022,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1105,7 +1090,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1185,7 +1175,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18220 i32.ge_u if @@ -1195,19 +1185,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1224,11 +1214,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1238,10 +1231,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1308,23 +1303,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $1 i32.load offset=1568 i32.ne i32.shl @@ -1334,18 +1381,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1353,17 +1400,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1374,7 +1421,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1388,10 +1435,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1402,14 +1449,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1419,26 +1466,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1448,7 +1495,47 @@ i32.and i32.store end + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1494,554 +1581,522 @@ global.set $~started call $start:typeof ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 1836 - i32.lt_s - if - i32.const 18240 - i32.const 18288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $start:typeof (local $0 i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store offset=4 - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store offset=4 - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store offset=4 - i32.const 1216 - i32.const 1216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1296 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1296 - i32.store offset=4 - i32.const 1296 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store offset=4 - i32.const 1216 - i32.const 1216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1296 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1296 - i32.store offset=4 - i32.const 1296 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store offset=4 - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 18220 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1472 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1504 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1648 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1836 + 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 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1168 + i32.store + local.get $0 + i32.const 1168 + i32.store offset=4 + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1168 + i32.store + local.get $0 + i32.const 1168 + i32.store offset=4 + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1216 + i32.store + local.get $0 + i32.const 1216 + i32.store offset=4 + i32.const 1216 + i32.const 1216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1296 + i32.store + local.get $0 + i32.const 1296 + i32.store offset=4 + i32.const 1296 + i32.const 1296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $typeof/c - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store offset=4 - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.store offset=4 - i32.const 1760 - i32.const 1760 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.store offset=4 - i32.const 1760 - i32.const 1760 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 47 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1216 + i32.store + local.get $0 + i32.const 1216 + i32.store offset=4 + i32.const 1216 + i32.const 1216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.store offset=4 + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1296 + i32.store + local.get $0 + i32.const 1296 + i32.store offset=4 + i32.const 1296 + i32.const 1296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1168 + i32.store + local.get $0 + i32.const 1168 + i32.store offset=4 + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 18220 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1760 - i32.store offset=4 - i32.const 1760 - i32.const 1760 - call $~lib/string/String.__eq - i32.eqz - if + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/pinSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/toSpace + i32.const 1652 + i32.const 1648 + i32.store + i32.const 1656 + i32.const 1648 + i32.store + i32.const 1648 + global.set $~lib/rt/itcms/fromSpace + 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 1836 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1120 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $typeof/c + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1088 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1168 + i32.store + local.get $0 + i32.const 1168 + i32.store offset=4 + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1760 + i32.store + local.get $0 + i32.const 1760 + i32.store offset=4 + i32.const 1760 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1760 + i32.store + local.get $0 + i32.const 1760 + i32.store offset=4 + i32.const 1760 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1760 + i32.store + local.get $0 + i32.const 1760 + i32.store offset=4 + i32.const 1760 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.optimized.wat index 28b5241b22..04ccddcf3f 100644 --- a/tests/compiler/unary.optimized.wat +++ b/tests/compiler/unary.optimized.wat @@ -10,6 +10,8 @@ (func $start:unary (local $0 i32) (local $1 i64) + (local $2 f32) + (local $3 f64) global.get $unary/i i32.const 1 i32.add @@ -138,13 +140,19 @@ global.set $unary/f f32.const 1.25 global.set $unary/f - f32.const 2.25 - global.set $unary/f f32.const 1.25 + local.tee $2 + f32.const 1 + f32.add global.set $unary/f - f32.const 0.25 + local.get $2 global.set $unary/f - f32.const 1.25 + global.get $unary/f + local.tee $2 + f32.const 1 + f32.sub + global.set $unary/f + local.get $2 global.set $unary/f global.get $unary/F f64.const 1 @@ -178,13 +186,19 @@ global.set $unary/F f64.const 1.25 global.set $unary/F - f64.const 2.25 - global.set $unary/F f64.const 1.25 + local.tee $3 + f64.const 1 + f64.add global.set $unary/F - f64.const 0.25 + local.get $3 global.set $unary/F - f64.const 1.25 + global.get $unary/F + local.tee $3 + f64.const 1 + f64.sub + global.set $unary/F + local.get $3 global.set $unary/F ) (func $~start diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index 5c9b753f71..64cca09d2e 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -1,7 +1,6 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 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))) @@ -186,57 +185,14 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/wasi/index/abort + (func $wasi/abort/test (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) i32.const 3 - local.set $2 - i32.const 4 local.set $1 + i32.const 4 + local.set $2 i32.const 0 i32.const 12 i32.store @@ -270,12 +226,8 @@ local.tee $0 i32.const 40 i32.store8 - i32.const 4 - call $~lib/util/number/decimalCount32 - local.tee $3 local.get $0 - i32.const 1 - i32.add + i32.const 2 i32.add local.set $0 loop $do-continue|0 @@ -283,30 +235,26 @@ i32.const 1 i32.sub local.tee $0 - local.get $1 + local.get $2 i32.const 10 i32.rem_u i32.const 48 i32.add i32.store8 - local.get $1 + local.get $2 i32.const 10 i32.div_u - local.tee $1 + local.tee $2 br_if $do-continue|0 end local.get $0 - local.get $3 + i32.const 1 i32.add local.tee $0 i32.const 58 i32.store8 - i32.const 3 - call $~lib/util/number/decimalCount32 - local.tee $1 local.get $0 - i32.const 1 - i32.add + i32.const 2 i32.add local.set $0 loop $do-continue|1 @@ -314,20 +262,20 @@ i32.const 1 i32.sub local.tee $0 - local.get $2 + local.get $1 i32.const 10 i32.rem_u i32.const 48 i32.add i32.store8 - local.get $2 + local.get $1 i32.const 10 i32.div_u - local.tee $2 + local.tee $1 br_if $do-continue|1 end local.get $0 - local.get $1 + i32.const 1 i32.add local.tee $0 i32.const 2601 @@ -345,9 +293,6 @@ drop i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit - ) - (func $wasi/abort/test - call $~lib/wasi/index/abort unreachable ) (func $~start diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index 156af18243..e078791693 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -1,11 +1,9 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $none_=>_f64 (func (result f64))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) + (type $none_=>_f64 (func (result f64))) (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))) @@ -20,77 +18,43 @@ (export "test" (func $wasi/seed/test)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - 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 - ) - (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (result i32) + (func $~lib/wasi/index/abort + (local $0 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 1417 + 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 1056 local.set $2 - local.get $0 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u i32.const 1 i32.shl i32.const 1056 i32.add - local.set $3 + local.set $5 i32.const 23 local.set $0 loop $while-continue|0 local.get $2 - local.get $3 + local.get $5 i32.lt_u if local.get $2 @@ -129,7 +93,7 @@ i32.const 2 i32.add else - local.get $3 + local.get $5 local.get $2 i32.const 2 i32.add @@ -144,7 +108,7 @@ if local.get $2 i32.load16_u offset=2 - local.tee $4 + local.tee $6 i32.const 64512 i32.and i32.const 56320 @@ -158,7 +122,7 @@ i32.shl i32.const 65536 i32.add - local.get $4 + local.get $6 i32.const 1023 i32.and i32.or @@ -245,85 +209,10 @@ end end local.get $0 - i32.const 23 - i32.sub - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/wasi/index/abort - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - local.set $2 - i32.const 1417 - local.set $1 - 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 1052 - i32.load - i32.const 1 - i32.shr_u - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 23 - i32.add - local.tee $0 i32.const 40 i32.store8 - i32.const 1417 - call $~lib/util/number/decimalCount32 - local.tee $3 local.get $0 - i32.const 1 - i32.add + i32.const 5 i32.add local.set $0 loop $do-continue|0 @@ -331,30 +220,26 @@ i32.const 1 i32.sub local.tee $0 - local.get $1 + local.get $4 i32.const 10 i32.rem_u i32.const 48 i32.add i32.store8 - local.get $1 + local.get $4 i32.const 10 i32.div_u - local.tee $1 + local.tee $4 br_if $do-continue|0 end local.get $0 - local.get $3 + i32.const 4 i32.add local.tee $0 i32.const 58 i32.store8 - i32.const 5 - call $~lib/util/number/decimalCount32 - local.tee $1 local.get $0 - i32.const 1 - i32.add + i32.const 2 i32.add local.set $0 loop $do-continue|1 @@ -362,20 +247,20 @@ i32.const 1 i32.sub local.tee $0 - local.get $2 + local.get $3 i32.const 10 i32.rem_u i32.const 48 i32.add i32.store8 - local.get $2 + local.get $3 i32.const 10 i32.div_u - local.tee $2 + local.tee $3 br_if $do-continue|1 end local.get $0 - local.get $1 + i32.const 1 i32.add local.tee $0 i32.const 2601 @@ -394,15 +279,18 @@ i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) + (func $wasi/seed/test (result f64) + (local $0 i32) (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 $0 + local.set $2 loop $do-continue|0 i32.const 0 i32.const 8 @@ -415,39 +303,132 @@ br_if $do-continue|0 end i32.const 0 - local.get $0 + local.get $2 i64.store i32.const 1 global.set $~lib/math/random_seeded local.get $1 f64.reinterpret_i64 i64.reinterpret_f64 - local.tee $0 - call $~lib/math/murmurHash3 + 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 - call $~lib/math/murmurHash3 + 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 + local.get $2 i32.wrap_i64 - call $~lib/math/splitMix32 + 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 - call $~lib/math/splitMix32 + 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 - global.get $~lib/math/random_state0_32 + local.get $4 i32.const 0 global.get $~lib/math/random_state1_64 i64.const 0 i64.ne i32.const 0 - global.get $~lib/math/random_state0_64 + local.get $1 i64.const 0 i64.ne select @@ -462,9 +443,9 @@ global.get $~lib/math/random_state0_64 local.set $1 global.get $~lib/math/random_state1_64 - local.tee $0 + local.tee $2 global.set $~lib/math/random_state0_64 - local.get $0 + local.get $2 local.get $1 local.get $1 i64.const 23 @@ -476,12 +457,12 @@ i64.shr_u i64.xor i64.xor - local.get $0 + local.get $2 i64.const 26 i64.shr_u i64.xor global.set $~lib/math/random_state1_64 - local.get $0 + local.get $2 i64.const 12 i64.shr_u i64.const 4607182418800017408 @@ -490,9 +471,6 @@ f64.const 1 f64.sub ) - (func $wasi/seed/test (result f64) - call $~lib/math/NativeMath.random - ) (func $~start nop ) diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index ec02beb3db..57ded0bc29 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -2,13 +2,12 @@ (type $i32_i32_i32_=>_none (func (param i32 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 (func (param i32 i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) @@ -23,6 +22,7 @@ (data (i32.const 1216) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + (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 + 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 2128 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2128 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 local.get $2 - i32.const 1 + i32.const 2 i32.sub local.tee $2 i32.const 1 i32.shl i32.add local.get $1 - i32.const 10 + i32.const 100 i32.rem_u - i32.const 48 + i32.const 2 + i32.shl + i32.const 2128 i32.add - i32.store16 + i32.load + i32.store local.get $1 - i32.const 10 + i32.const 100 i32.div_u - local.tee $1 - br_if $do-continue|0 + 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 2128 + 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/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $2 i32.eqz if @@ -1897,18 +2651,18 @@ local.get $1 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 21 i32.le_s i32.const 0 local.get $1 - local.get $3 + local.get $4 i32.le_s select if (result i32) loop $for-loop|0 local.get $1 - local.get $3 + local.get $4 i32.lt_s if local.get $0 @@ -1926,27 +2680,27 @@ end end local.get $0 - local.get $3 + local.get $4 i32.const 1 i32.shl i32.add i32.const 3145774 i32.store - local.get $3 + local.get $4 i32.const 2 i32.add else - local.get $3 + local.get $4 i32.const 21 i32.le_s i32.const 0 - local.get $3 + local.get $4 i32.const 0 i32.gt_s select if (result i32) local.get $0 - local.get $3 + local.get $4 i32.const 1 i32.shl i32.add @@ -1967,20 +2721,20 @@ i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 0 i32.le_s i32.const 0 - local.get $3 + local.get $4 i32.const -6 i32.gt_s select if (result i32) local.get $0 i32.const 2 - local.get $3 + local.get $4 i32.sub - local.tee $3 + local.tee $5 i32.const 1 i32.shl i32.add @@ -1996,7 +2750,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $3 + local.get $5 i32.lt_s if local.get $0 @@ -2014,7 +2768,7 @@ end end local.get $1 - local.get $3 + local.get $5 i32.add else local.get $1 @@ -2025,10 +2779,10 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $1 + local.tee $3 i32.const 4 i32.add - local.get $3 + local.get $4 i32.const 1 i32.sub local.tee $0 @@ -2042,13 +2796,60 @@ local.set $0 end local.get $0 + 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.set $1 local.get $0 - call $~lib/util/number/decimalCount32 + local.get $1 i32.const 1 i32.add local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $3 i32.const 45 i32.const 43 local.get $2 @@ -2081,16 +2882,16 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $2 + local.tee $3 i32.const 4 i32.add - local.get $3 + local.get $4 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $5 if i32.const 0 local.get $0 @@ -2098,16 +2899,63 @@ local.set $0 end local.get $0 + 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 - call $~lib/util/number/decimalCount32 + local.get $2 i32.const 1 i32.add local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $3 i32.const 45 i32.const 43 - local.get $3 + local.get $5 select i32.store16 offset=4 local.get $0 @@ -2123,17 +2971,18 @@ (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i64) (local $7 i64) (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $1 f64.const 0 f64.lt - local.tee $9 + local.tee $10 if (result f64) local.get $0 i32.const 45 @@ -2150,7 +2999,7 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $8 + local.tee $9 i32.const 0 i32.ne i64.extend_i32_u @@ -2169,46 +3018,47 @@ local.get $2 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $8 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus - local.get $8 + local.get $9 i32.const 1 - local.get $8 + local.get $9 select i32.const 1075 i32.sub - local.tee $8 + local.tee $9 i32.const 1 i32.sub - local.get $4 + local.get $8 i32.sub - local.set $4 + local.set $8 local.get $3 local.get $3 i64.const 4503599627370496 i64.eq i32.const 1 i32.add - local.tee $10 + local.tee $5 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $8 - local.get $10 + local.get $9 + local.get $5 i32.sub - local.get $4 + local.get $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $4 + local.get $8 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp + local.tee $8 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -2217,9 +3067,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $4 + local.tee $5 local.get $1 - local.get $4 + local.get $5 f64.convert_i32_s f64.ne i32.add @@ -2227,18 +3077,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $4 + local.tee $5 i32.const 3 i32.shl - local.tee $10 + local.tee $11 i32.sub global.set $~lib/util/number/_K - local.get $10 + local.get $11 i32.const 1216 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $4 + local.get $5 i32.const 1 i32.shl i32.const 1912 @@ -2255,7 +3105,7 @@ i64.shr_u local.tee $6 global.get $~lib/util/number/_frc_plus - local.tee $5 + local.tee $4 i64.const 32 i64.shr_u local.tee $7 @@ -2264,10 +3114,10 @@ local.get $7 i64.mul local.get $2 - local.get $5 + local.get $4 i64.const 4294967295 i64.and - local.tee $5 + local.tee $4 i64.mul i64.const 32 i64.shr_u @@ -2276,7 +3126,7 @@ i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $4 local.get $6 i64.mul local.get $7 @@ -2290,9 +3140,9 @@ i64.add i64.const 1 i64.sub - local.set $5 + local.set $4 local.get $0 - local.get $9 + local.get $10 i32.const 1 i32.shl i32.add @@ -2339,29 +3189,29 @@ i64.shr_u i64.add global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 + local.tee $5 + local.get $9 local.get $0 i32.sub i32.add i32.const -64 i32.sub - local.get $5 local.get $4 - global.get $~lib/util/number/_exp + local.get $5 + local.get $8 i32.add i32.const -64 i32.sub - local.get $5 + local.get $4 local.get $6 global.get $~lib/util/number/_frc_minus local.tee $3 i64.const 32 i64.shr_u - local.tee $5 + local.tee $4 i64.mul local.get $2 - local.get $5 + local.get $4 i64.mul local.get $2 local.get $3 @@ -2391,13 +3241,13 @@ i64.const 1 i64.add i64.sub - local.get $9 + local.get $10 call $~lib/util/number/genDigits - local.get $9 + local.get $10 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $9 + local.get $10 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -2466,119 +3316,317 @@ end unreachable end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/wasi/index/trace (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 1056 - local.set $6 - i32.const 1052 + local.get $0 + local.get $1 + call $~lib/util/number/dtoa_core + ) + (func $~lib/wasi/index/trace (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + i32.const 1056 + local.set $9 + i32.const 1052 + i32.load + i32.const 1056 + i32.add + local.set $7 + loop $while-continue|0 + local.get $7 + local.get $9 + i32.gt_u + if + local.get $9 + i32.load16_u + local.tee $8 + i32.const 128 + i32.lt_u + if (result i32) + local.get $6 + i32.const 1 + i32.add + else + local.get $8 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $6 + i32.const 2 + i32.add + else + local.get $7 + local.get $9 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $8 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $9 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $6 + i32.const 4 + i32.add + local.set $6 + local.get $9 + i32.const 4 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $6 + i32.const 3 + i32.add + end + end + local.set $6 + local.get $9 + i32.const 2 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $6 + i32.const 56 + local.get $6 + i32.const 56 + i32.gt_s + select + i32.const 13 + 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.set $8 + local.get $6 + i32.const 1073741820 + i32.ge_u + if + i32.const 1168 + i32.const 1104 + i32.const 458 + i32.const 30 + call $~lib/wasi/index/abort + unreachable + end + local.get $8 + 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 $6 + call $~lib/rt/tlsf/searchBlock + local.tee $10 + 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 $8 + 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 $7 + local.get $9 + local.get $7 + local.get $7 + local.get $9 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $7 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $8 + local.get $9 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $8 + local.get $6 + call $~lib/rt/tlsf/searchBlock + local.tee $10 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 496 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + end + local.get $6 + local.get $10 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1104 + i32.const 498 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $8 + local.get $10 + call $~lib/rt/tlsf/removeBlock + local.get $10 i32.load - i32.const 1056 + local.set $9 + local.get $6 + i32.const 4 i32.add - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $8 - i32.lt_u - if - local.get $6 - i32.load16_u - local.tee $9 - i32.const 128 - i32.lt_u - if (result i32) - local.get $7 - i32.const 1 - i32.add - else - local.get $9 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $7 - i32.const 2 - i32.add - else - local.get $8 - local.get $6 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $9 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $6 - i32.load16_u offset=2 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $7 - i32.const 4 - i32.add - local.set $7 - local.get $6 - i32.const 4 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $7 - i32.const 3 - i32.add - end - end - local.set $7 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|0 - end + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1104 + i32.const 357 + i32.const 14 + call $~lib/wasi/index/abort + unreachable end - local.get $7 - i32.const 56 - local.get $7 - i32.const 56 - i32.gt_s - select - i32.const 13 - i32.add - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $9 + i32.const -4 + i32.and + local.get $6 + i32.sub + local.tee $7 + i32.const 16 + i32.ge_u if - call $~lib/rt/tlsf/initialize + local.get $10 + local.get $6 + local.get $9 + i32.const 2 + i32.and + i32.or + i32.store + local.get $6 + local.get $10 + i32.const 4 + i32.add + i32.add + local.tee $6 + local.get $7 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $8 + local.get $6 + call $~lib/rt/tlsf/insertBlock + else + local.get $10 + local.get $9 + i32.const -2 + i32.and + i32.store + local.get $10 + i32.const 4 + i32.add + local.tee $6 + local.get $10 + i32.load + i32.const -4 + i32.and + i32.add + local.get $6 + local.get $10 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock + local.get $10 i32.const 4 i32.add local.tee $7 i32.const 8 i32.add - local.tee $8 + local.tee $6 i32.const 4 i32.add - local.set $6 + local.set $9 local.get $7 - local.get $6 + local.get $9 i32.store - local.get $6 + local.get $9 i64.const 9071406388179572 i64.store local.get $7 @@ -2587,7 +3635,7 @@ i32.const 2 local.get $7 i32.const 1 - local.get $8 + local.get $6 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $7 @@ -2596,29 +3644,29 @@ i32.load i32.const 1 i32.shr_u - local.get $6 + local.get $9 call $~lib/string/String.UTF8.encodeUnsafe i32.store offset=4 i32.const 2 local.get $7 i32.const 1 - local.get $8 + local.get $6 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 if (result i32) - local.get $6 + local.get $9 i32.const 32 i32.store8 local.get $7 - local.get $6 + local.get $9 i32.const 1 i32.add - local.tee $6 - local.get $6 + local.tee $8 + local.get $8 local.get $1 call $~lib/util/number/dtoa_buffered - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add @@ -2626,7 +3674,7 @@ i32.const 2 local.get $7 i32.const 1 - local.get $8 + local.get $6 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 @@ -2634,11 +3682,11 @@ i32.gt_s if local.get $7 - local.get $6 - local.get $6 + local.get $8 + local.get $8 local.get $2 call $~lib/util/number/dtoa_buffered - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add @@ -2646,7 +3694,7 @@ i32.const 2 local.get $7 i32.const 1 - local.get $8 + local.get $6 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 @@ -2654,11 +3702,11 @@ i32.gt_s if local.get $7 - local.get $6 - local.get $6 + local.get $8 + local.get $8 local.get $3 call $~lib/util/number/dtoa_buffered - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add @@ -2666,7 +3714,7 @@ i32.const 2 local.get $7 i32.const 1 - local.get $8 + local.get $6 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 @@ -2674,11 +3722,11 @@ i32.gt_s if local.get $7 - local.get $6 - local.get $6 + local.get $8 + local.get $8 local.get $4 call $~lib/util/number/dtoa_buffered - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add @@ -2686,7 +3734,7 @@ i32.const 2 local.get $7 i32.const 1 - local.get $8 + local.get $6 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 @@ -2694,11 +3742,11 @@ i32.gt_s if local.get $7 - local.get $6 - local.get $6 + local.get $8 + local.get $8 local.get $5 call $~lib/util/number/dtoa_buffered - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add @@ -2706,18 +3754,18 @@ i32.const 2 local.get $7 i32.const 1 - local.get $8 + local.get $6 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop end end end end - local.get $6 + local.get $8 i32.const 1 i32.sub else - local.get $6 + local.get $9 end i32.const 10 i32.store8 @@ -2727,11 +3775,11 @@ i32.const 2 local.get $7 i32.const 1 - local.get $8 + local.get $6 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $7 - i32.const 18512 + i32.const 18912 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -2743,7 +3791,7 @@ local.get $7 i32.const 4 i32.sub - local.set $0 + local.set $8 local.get $7 i32.const 15 i32.and @@ -2752,7 +3800,7 @@ local.get $7 select if (result i32) - local.get $0 + local.get $8 i32.load i32.const 1 i32.and @@ -2769,17 +3817,18 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 - local.get $0 + local.get $8 + local.get $8 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $8 call $~lib/rt/tlsf/insertBlock end ) (func $~start + (local $0 i32) global.get $~started if return @@ -2791,20 +3840,21 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 2128 + i32.const 2528 i32.lt_s if - i32.const 18544 - i32.const 18592 + i32.const 18944 + i32.const 18992 i32.const 1 i32.const 1 call $~lib/wasi/index/abort unreachable end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store i32.const 0 diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index becc247f9e..3dd7d20d8f 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result 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_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") @@ -22,7 +22,6 @@ (data (i32.const 1432) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1488) "\04\00\00\00 \00\00\00\00\00\00\00 ") (data (i32.const 1516) " ") - (global $while/ran (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)) @@ -36,103 +35,6 @@ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908)) (export "memory" (memory $0)) (start $~start) - (func $while/testNested - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 10 - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - loop $while-continue|1 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 30 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - br $while-continue|0 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - local.get $0 - ) (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -178,170 +80,154 @@ end end ) - (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $0 - call $~lib/rt/itcms/Object#set:next - local.get $1 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 17908 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $2 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17908 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 i32.load offset=8 - select + local.tee $1 i32.eqz if i32.const 0 i32.const 1168 - i32.const 127 - i32.const 18 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink + 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 end + global.get $~lib/rt/itcms/toSpace + local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 + local.get $3 + i32.or + i32.store offset=4 + local.get $0 local.get $2 i32.store offset=8 local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $1 - call $~lib/rt/itcms/Object#set:next - end - local.get $0 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - call $~lib/rt/itcms/Object#linkTo - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add @@ -629,12 +515,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 local.get $1 i32.const 4 i32.add i32.add + local.get $4 i32.ne if i32.const 0 @@ -988,7 +874,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1051,7 +942,12 @@ if local.get $0 local.get $1 - call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 local.get $0 i32.const 20 i32.add @@ -1131,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 17908 i32.ge_u if @@ -1141,19 +1037,19 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 i32.const 4 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 15 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $0 select if (result i32) - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1170,11 +1066,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.tee $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 @@ -1184,10 +1083,12 @@ return end global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=4 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 i32.store offset=8 i32.const 0 global.set $~lib/rt/itcms/state @@ -1254,23 +1155,75 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + 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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $0 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $0 + local.get $1 i32.load offset=1568 i32.ne i32.shl @@ -1280,18 +1233,18 @@ i32.and i32.const 16 i32.shr_u - local.set $1 + local.set $2 + local.get $0 local.get $2 - local.get $1 - local.get $1 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1299,17 +1252,17 @@ unreachable end end + local.get $1 local.get $0 - local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $0 + local.get $1 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1320,7 +1273,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1334,10 +1287,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load local.tee $2 i32.const -4 @@ -1348,14 +1301,14 @@ i32.const 16 i32.ge_u if - local.get $1 + local.get $0 local.get $2 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add local.tee $2 @@ -1365,26 +1318,26 @@ i32.const 1 i32.or i32.store - local.get $0 + local.get $1 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $1 + local.get $0 local.get $2 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.get $0 local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1394,14 +1347,53 @@ i32.and i32.store end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $1 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add ) (func $start:while (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 - global.set $while/ran + (local $3 i32) i32.const 10 local.set $0 loop $while-continue|0 @@ -1411,10 +1403,10 @@ i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end @@ -1427,7 +1419,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 10 i32.ne if @@ -1438,78 +1430,142 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - call $while/testNested - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end i32.const 0 - global.set $while/ran - i32.const 1 + local.set $2 + i32.const 10 local.set $0 loop $while-continue|00 local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - if (result i32) - local.get $2 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $3 i32.const 1 i32.add - local.tee $2 - else - i32.const 0 - end - br_if $while-continue|00 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.ne + local.set $3 + loop $while-continue|1 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|1 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 30 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + br $while-continue|00 + end + end + local.get $0 if i32.const 0 i32.const 1056 - i32.const 46 + i32.const 32 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $3 i32.const 1 - global.set $while/ran + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - global.set $while/ran + local.set $3 + i32.const 1 + local.set $0 + loop $while-continue|01 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if (result i32) + local.get $3 + i32.const 1 + i32.add + local.tee $3 + else + i32.const 0 + end + br_if $while-continue|01 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 local.set $0 - loop $while-continue|001 + loop $while-continue|02 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 10 i32.ne - br_if $while-continue|001 + br_if $while-continue|02 end local.get $0 i32.const 10 @@ -1522,18 +1578,16 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $while/ran i32.const 0 local.set $0 - loop $while-continue|01 + loop $while-continue|03 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 10 i32.ne - br_if $while-continue|01 + br_if $while-continue|03 end local.get $0 i32.const 10 @@ -1546,30 +1600,16 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $while/ran - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran i32.const 10 local.set $0 - loop $while-continue|02 + loop $while-continue|04 local.get $0 if local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|02 + br $while-continue|04 end end local.get $0 @@ -1581,32 +1621,28 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran i32.const 10 local.set $0 i32.const 10 - local.set $1 - loop $while-continue|03 + local.set $2 + loop $while-continue|05 local.get $0 if - loop $while-continue|1 - local.get $1 + loop $while-continue|16 + local.get $2 if - local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $while-continue|1 + local.set $2 + br $while-continue|16 end end local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|03 + br $while-continue|05 end end local.get $0 @@ -1618,7 +1654,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 if i32.const 0 i32.const 1056 @@ -1627,10 +1663,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran memory.size i32.const 16 i32.shl @@ -1639,200 +1671,218 @@ 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 - call $~lib/rt/itcms/initLazy 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 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1396 i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - call $while/Ref#constructor - local.tee $0 + i32.const 1400 + i32.const 1392 i32.store - loop $while-continue|04 - local.get $0 - if - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 10 - i32.eq - if - i32.const 0 - local.set $0 - else - global.get $~lib/memory/__stack_pointer - call $while/Ref#constructor - local.tee $0 - i32.store - end - br $while-continue|04 - end - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 151 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - global.set $while/ran + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace i32.const 0 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - call $while/Ref#constructor - local.tee $1 - i32.store - loop $while-continue|05 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 call $while/Ref#constructor - if - block $while-break|0 - local.get $0 + local.tee $0 + i32.store + loop $while-continue|07 + local.get $0 + if + local.get $2 i32.const 1 i32.add - local.tee $0 + local.tee $2 i32.const 10 i32.eq if i32.const 0 - local.set $1 - br $while-break|0 + local.set $0 + else + global.get $~lib/memory/__stack_pointer + call $while/Ref#constructor + local.tee $0 + i32.store end - br $while-continue|05 + br $while-continue|07 end end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - if - i32.const 0 - i32.const 1056 - i32.const 172 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - global.set $while/ran - i32.const 0 - local.set $0 - loop $while-continue|046 + local.get $2 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 1 + if + i32.const 0 + i32.const 1056 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $0 - i32.const 1 + global.set $~lib/memory/__stack_pointer + i32.const 0 + 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 1524 i32.lt_s - br_if $while-continue|046 - end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 0 - local.set $0 - loop $while-continue|057 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + call $while/Ref#constructor + local.tee $2 + i32.store + loop $while-continue|06 + call $while/Ref#constructor + if + block $while-break|07 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $2 + br $while-break|07 + end + br $while-continue|06 + end + end + end local.get $0 - i32.const 1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + if + i32.const 0 + i32.const 1056 + i32.const 172 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $0 - i32.const 1 - i32.lt_s - br_if $while-continue|057 - end - i32.const 1 - global.set $while/ran - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|06 + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + loop $while-continue|08 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 1 + i32.lt_s + br_if $while-continue|08 + end + i32.const 0 + local.set $0 + loop $while-continue|09 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 1 + i32.lt_s + br_if $while-continue|09 + end + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|010 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|010 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|111 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|06 + br $while-continue|111 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 + return end - call $~lib/rt/itcms/step - drop - loop $while-continue|17 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|17 - 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 + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1866,7 +1916,12 @@ (func $~start call $start:while ) - (func $~stack_check + (func $while/Ref#constructor (result i32) + (local $0 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 1524 i32.lt_s @@ -1878,92 +1933,12 @@ call $~lib/builtins/abort unreachable end - ) - (func $while/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 - global.get $~lib/rt/itcms/total - 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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 3 - i32.store offset=12 - local.get $0 i32.const 0 - i32.store offset=16 - local.get $0 - global.get $~lib/rt/itcms/fromSpace - global.get $~lib/rt/itcms/white - call $~lib/rt/itcms/Object#linkTo - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + i32.store local.get $0 - i32.const 20 - i32.add + call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer From 4c85c58059c1e24e71d7e42c527c8aa24e8daff2 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 31 Mar 2021 11:14:09 +0200 Subject: [PATCH 2/2] update related asconfig test --- tests/asconfig/complicated/assembly/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/asconfig/complicated/assembly/index.ts b/tests/asconfig/complicated/assembly/index.ts index ccc7edfb32..f3e3625a7f 100644 --- a/tests/asconfig/complicated/assembly/index.ts +++ b/tests/asconfig/complicated/assembly/index.ts @@ -1,5 +1,5 @@ assert(ASC_OPTIMIZE_LEVEL == 3, "expected optimize level == 3"); -assert(ASC_SHRINK_LEVEL == 1, "expected shrink level == 1"); +assert(ASC_SHRINK_LEVEL == 0, "expected shrink level == 0"); assert(ASC_FEATURE_SIMD, "expected SIMD enabled"); let size = memory.size(); trace("size", 1, size);