diff --git a/cli/asc.js b/cli/asc.js index e33875a8dc..9b30cac365 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 68ed4aed4b..2997f65600 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -35,7 +35,7 @@ "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 -Ospeed", @@ -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 } }, 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); diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index e2dc3c48a5..9738febb8e 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -2,7 +2,6 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17788)) (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 99 - 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 103 - 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 99 + 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 103 + 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 3d15d1a678..3bd23ba54c 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))) (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)) - (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?") (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 484aed31d6..dfee42b84d 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -2,7 +2,6 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 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))) @@ -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,15 +115,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -132,20 +134,20 @@ i32.eqz 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 +160,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 +194,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 +204,7 @@ call $start:builtins ) (func $start:builtins + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -233,9 +221,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 +582,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 +610,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 +697,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 +709,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 +728,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 +747,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 +766,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 +785,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 +804,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 +823,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 +842,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 +861,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 +880,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 +899,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 +918,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 +937,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 +956,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 +975,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 +994,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 +1013,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 +1032,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 +1051,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 +1070,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 a0a3b5487d..4100d95a9b 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -1,7 +1,7 @@ (module (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (memory $0 1) @@ -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 c5d0255ba3..2b5b8c0141 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_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -36,15 +35,6 @@ (data (i32.const 1516) " \00\00\00\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\08\00\00\00 \00\00\00\00\00\00\00 \00\00\00\n\00\00\00 \00\00\00\00\00\00\00 \00\00\00\0c\00\00\00 ") (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,20 +1037,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1079,11 +1063,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 @@ -1093,10 +1080,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 @@ -1117,28 +1106,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 @@ -1235,11 +1224,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.gt_u if @@ -1250,50 +1308,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 @@ -1301,18 +1363,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 @@ -1320,18 +1382,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 @@ -1343,7 +1405,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1356,12 +1418,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 @@ -1375,54 +1437,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 @@ -1432,143 +1494,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1576,7 +1677,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1609,732 +1710,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 d5f3ded218..c985274597 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -1,10 +1,10 @@ (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_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_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -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,20 +1059,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1100,11 +1085,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 +1102,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 @@ -1184,44 +1174,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 + 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 @@ -1229,15 +1271,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 @@ -1264,22 +1306,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 @@ -1288,32 +1330,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 @@ -1325,70 +1367,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 @@ -1441,11 +1447,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 @@ -1457,14 +1474,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 @@ -1476,14 +1508,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 @@ -1495,13 +1532,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 @@ -1521,63 +1551,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 @@ -1588,7 +1647,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 @@ -1600,15 +1669,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 @@ -1619,7 +1700,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 ab12f7647f..cebc44fb43 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -1,10 +1,10 @@ (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))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -59,15 +59,6 @@ (data (i32.const 1820) " \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04\00\00\00 \00\00\00\04\00\00\00 \00\00\00\06\00\00\00 \00\00\00\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\t\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\0d\00\00\00 \00\00\00\10\00\00\00 ") (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,20 +1097,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1138,11 +1123,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 @@ -1152,10 +1140,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 @@ -1222,44 +1212,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 + 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 @@ -1267,15 +1309,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 @@ -1302,22 +1344,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 @@ -1326,32 +1368,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 @@ -1363,70 +1405,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 @@ -1466,7 +1472,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 @@ -1480,15 +1486,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -1496,20 +1505,20 @@ i32.eqz 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 @@ -1522,33 +1531,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 @@ -1565,67 +1574,15 @@ 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 - call $class-overloading/C#a - return - end - i32.const 1648 - global.set $class-overloading/which - return - end - 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 + br_table $case0 $case1 $case0 $case0 $case2 $default end i32.const 1520 global.set $class-overloading/which return end - i32.const 1616 - global.set $class-overloading/which + call $class-overloading/C#a return end i32.const 1648 @@ -1635,122 +1592,6 @@ 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 @@ -1828,7 +1669,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 @@ -1840,22 +1686,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 @@ -1879,822 +1719,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 @@ -2723,7 +3113,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 0eb6807c75..3f47129a82 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 21459e7b31..bc0b236d29 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 (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_i32_=>_none (func (param 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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -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,20 +1049,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1086,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 @@ -1100,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 @@ -1124,28 +1118,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 @@ -1242,276 +1236,77 @@ 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.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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 local.tee $1 i32.const 4 @@ -1619,6 +1414,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 @@ -1636,12 +1435,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 @@ -1657,13 +1456,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 @@ -1674,30 +1474,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.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.tee $2 + local.get $6 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $3 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $5 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $6 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.gt_u if - 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 @@ -1705,7 +1719,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 @@ -1714,7 +1728,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 @@ -1747,8 +1760,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 @@ -1760,7 +1771,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1780,74 +1791,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 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 32 - 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 32 - 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 32 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 32 + 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 32 + 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 @@ -1892,17 +1920,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 @@ -1914,14 +1962,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 @@ -1942,7 +1984,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 e5d4819c0a..29a41112be 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) @@ -9,15 +9,15 @@ (data (i32.const 1048) "\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") (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 021c1d63c3..8aa24f1c6f 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,11 +1,10 @@ (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 $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -44,15 +43,6 @@ (data (i32.const 1468) " \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (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,20 +1105,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1147,11 +1131,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 @@ -1161,10 +1148,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 @@ -1185,28 +1174,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 @@ -1303,11 +1292,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.gt_u if @@ -1318,50 +1376,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 @@ -1369,18 +1431,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 @@ -1388,18 +1450,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 @@ -1411,7 +1473,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1424,12 +1486,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 @@ -1443,54 +1505,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 @@ -1500,143 +1562,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1644,7 +1745,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1677,102 +1778,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) @@ -1784,214 +1790,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 @@ -2052,17 +2118,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 e76a121bf4..80996cf5c6 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 $i32_=>_i32 (func (param 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_=>_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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -35,15 +35,6 @@ (data (i32.const 1500) " ") (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,20 +1037,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1078,11 +1063,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 @@ -1092,10 +1080,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 @@ -1162,44 +1152,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 @@ -1207,17 +1249,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 @@ -1228,7 +1270,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1242,10 +1284,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 @@ -1256,14 +1298,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 @@ -1273,26 +1315,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 @@ -1302,26 +1344,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 @@ -1330,7 +1413,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.ne if @@ -1342,17 +1425,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 @@ -1364,30 +1447,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 @@ -1396,7 +1479,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 9 i32.ne if @@ -1407,10 +1490,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 @@ -1419,7 +1502,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.ne if @@ -1430,7 +1513,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 9 i32.ne if @@ -1443,14 +1526,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 @@ -1465,14 +1548,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 @@ -1487,14 +1570,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 @@ -1508,30 +1591,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 @@ -1542,7 +1625,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 90 i32.ne if @@ -1561,159 +1644,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 @@ -1747,7 +1862,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 @@ -1759,92 +1879,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 747c93b33d..f6d53b32c4 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -1,12 +1,12 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (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_i32_=>_none (func (param 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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -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,20 +1055,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1097,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 @@ -1111,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 @@ -1135,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 @@ -1253,11 +1242,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.gt_u if @@ -1268,50 +1326,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 @@ -1319,18 +1381,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 @@ -1338,18 +1400,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 @@ -1361,7 +1423,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1374,12 +1436,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 @@ -1393,54 +1455,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 @@ -1450,143 +1512,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1594,7 +1695,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1627,105 +1728,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 @@ -1747,14 +1755,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 @@ -1786,10 +1815,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 @@ -1862,14 +1910,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 484a9d20b8..f26e0b4178 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 $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_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -31,15 +31,6 @@ (data (i32.const 1440) "\03\00\00\00 \00\00\00\00\00\00\00 ") (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,20 +1033,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1074,11 +1059,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 @@ -1088,10 +1076,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 @@ -1158,23 +1148,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 @@ -1184,18 +1226,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 @@ -1203,17 +1245,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 @@ -1224,7 +1266,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1238,10 +1280,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 @@ -1252,14 +1294,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 @@ -1269,26 +1311,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 @@ -1298,7 +1340,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 @@ -1327,7 +1406,6 @@ unreachable ) (func $~start - (local $0 i32) memory.size i32.const 16 i32.shl @@ -1336,84 +1414,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 2cf25a16cf..6be1e46aed 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -1,12 +1,12 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 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_=>_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_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $exports/Animal.CAT i32 (i32.const 0)) (global $exports/Animal.DOG i32 (i32.const 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,20 +1087,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1128,11 +1113,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 @@ -1142,10 +1130,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 @@ -1212,44 +1202,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 + 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 @@ -1257,15 +1299,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 @@ -1292,22 +1334,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 @@ -1316,32 +1358,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 @@ -1353,70 +1395,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 @@ -1526,17 +1532,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 @@ -1548,36 +1574,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 @@ -1587,64 +1619,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 @@ -1654,52 +1713,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 bcd18ce5fb..d9c0ebacf3 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_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -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,20 +1088,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1129,11 +1114,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 @@ -1143,10 +1131,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 @@ -1213,24 +1203,76 @@ 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 + 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 @@ -1239,18 +1281,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 @@ -1258,17 +1300,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 @@ -1279,7 +1321,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1293,10 +1335,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 @@ -1307,14 +1349,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 @@ -1324,26 +1366,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 @@ -1353,72 +1395,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 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 $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 @@ -1499,103 +1504,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 @@ -1607,18 +1650,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 9a9a7d655a..7e02830631 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1,11 +1,10 @@ (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 $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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -44,15 +43,6 @@ (data (i32.const 1752) "\04\00\00\00\02A\00\00\00\00\00\00\02A") (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,20 +1055,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - 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,276 +1242,77 @@ 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.gt_u - if - i32.const 1216 - i32.const 1552 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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 local.tee $1 i32.const 4 @@ -1626,6 +1420,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 @@ -1643,12 +1441,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 @@ -1664,13 +1462,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 @@ -1684,45 +1483,258 @@ 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.gt_u + if + i32.const 1216 + i32.const 1552 + i32.const 458 + i32.const 29 + 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 + 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 $4 i32) local.get $1 i32.eqz if @@ -1756,8 +1768,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 @@ -1772,7 +1782,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1783,178 +1793,1089 @@ 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.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.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.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 - 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 + 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 - 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#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 $7 + i32.const 1 + i32.add + local.tee $6 + local.tee $3 + i32.const 1176 + i32.load + local.tee $10 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 17 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.load + local.tee $9 + local.set $1 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $10 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1073741820 + local.get $4 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $4 + local.get $2 + local.get $4 + i32.gt_u + select + local.tee $8 + local.tee $3 + local.get $9 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $3 + i32.store offset=16 + local.get $1 + local.set $5 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $5 + local.set $4 + local.get $3 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $11 + block $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $4 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $4 + i32.sub + local.get $11 + i32.sub + i32.const 0 + local.get $11 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $4 + local.get $1 + local.get $11 + 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 $11 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $11 + i32.const 1 + i32.sub + local.set $11 + local.get $4 + local.tee $3 + i32.const 1 + i32.add + local.set $4 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $11 + i32.const 8 + i32.ge_u + if + local.get $4 + local.get $1 + i64.load + i64.store + local.get $11 + i32.const 8 + i32.sub + local.set $11 + local.get $4 + i32.const 8 + i32.add + local.set $4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $11 + if + local.get $4 + local.tee $3 + i32.const 1 + i32.add + local.set $4 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.load8_u + i32.store8 + local.get $11 + i32.const 1 + i32.sub + local.set $11 + br $while-continue|2 + end + 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 $11 + i32.add + i32.const 7 + i32.and + if + local.get $11 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.get $11 + i32.const 1 + i32.sub + local.tee $11 + i32.add + local.get $1 + local.get $11 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $11 + i32.const 8 + i32.ge_u + if + local.get $4 + local.get $11 + i32.const 8 + i32.sub + local.tee $11 + i32.add + local.get $1 + local.get $11 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $11 + if + local.get $4 + local.get $11 + i32.const 1 + i32.sub + local.tee $11 + i32.add + local.get $1 + local.get $11 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + end + local.get $5 + local.get $10 + i32.add + local.get $8 + local.get $10 + i32.sub + call $~lib/memory/memory.fill + local.get $5 + local.get $9 + i32.ne + if + i32.const 1168 + local.get $5 + i32.store + i32.const 1172 + local.get $5 + i32.store + i32.const 1168 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + end + i32.const 1176 + local.get $8 + i32.store + end + i32.const 1172 + i32.load + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $0 + i32.store + i32.const 1168 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + i32.const 1180 + local.get $6 + i32.store ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2029,252 +2950,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 $8 - i32.const 1 - i32.add - local.tee $9 - local.tee $1 - i32.const 1176 - i32.load - local.tee $4 - 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 17 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.load - local.tee $6 - local.set $0 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $4 - i32.const 1 - i32.shl - local.tee $3 - i32.const 1073741820 - local.get $3 - i32.const 1073741820 - i32.lt_u - select - local.tee $3 - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $1 - local.get $1 - local.get $3 - i32.lt_u - select - local.tee $7 - local.tee $3 - local.get $6 + global.get $~lib/memory/__stack_pointer i32.const 20 - i32.sub - local.tee $5 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $5 - local.get $3 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $3 - local.get $5 - i32.load offset=12 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 - local.get $0 - local.get $3 - local.get $5 - 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 $4 + 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 $7 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 - local.get $6 - 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 $7 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 $8 - 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 $9 - 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 af4f07d9b4..b502ff0347 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -1,10 +1,10 @@ (module - (type $i32_=>_i32 (func (param 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_=>_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_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -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,20 +1044,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1081,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 @@ -1095,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 @@ -1165,23 +1159,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 @@ -1191,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 @@ -1210,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 @@ -1245,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 @@ -1269,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 @@ -1306,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 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 $extends-recursive/Parent#set:child (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 @@ -1514,17 +1521,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 @@ -1536,33 +1563,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 @@ -1579,62 +1612,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 08cc0284c4..14391c114c 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $none_=>_externref (func (result externref))) + (type $none_=>_none (func)) (type $externref_=>_externref (func (param externref) (result externref))) (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -32,7 +32,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 @@ -151,13 +157,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 858a098d31..157f04d2a6 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,10 +1,9 @@ (module - (type $none_=>_none (func)) (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_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -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) @@ -994,26 +986,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 (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 @@ -1033,8 +1044,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 @@ -1054,8 +1073,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 @@ -1075,8 +1102,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 @@ -1096,8 +1131,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 @@ -1117,8 +1160,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 @@ -1138,9 +1189,6 @@ end local.get $0 call $~lib/rt/tlsf/__free - ) - (func $~start - call $features/simd/test_v128 i32.const 0 i32.const 1184 i32.const 255 diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 0522d0d41b..38af4021b4 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -1,12 +1,12 @@ (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 (func (param 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_=>_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 $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -54,15 +54,6 @@ (data (i32.const 1968) "\14") (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,20 +1062,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1099,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 @@ -1113,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 @@ -1137,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 @@ -1255,271 +1249,72 @@ 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.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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.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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 i32.sub i32.const -4 @@ -1632,6 +1427,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 @@ -1649,12 +1448,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 @@ -1670,13 +1469,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 @@ -1690,51 +1490,264 @@ 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.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.tee $2 + local.get $6 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $3 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $5 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $6 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + i32.load + local.set $5 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $6 + local.get $3 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $3 + local.get $6 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $6 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $6 + i32.const 4 + i32.add + local.tee $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $6 + 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 @@ -1760,8 +1773,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 @@ -1773,7 +1784,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1784,22 +1795,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) @@ -1826,7 +1821,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 @@ -1840,15 +1835,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -1856,20 +1854,20 @@ i32.eqz 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 @@ -1882,33 +1880,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 @@ -1916,14 +1914,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 @@ -2005,19 +1995,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) @@ -2026,1024 +2003,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 @@ -3059,11 +3253,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 @@ -3079,7 +3284,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 @@ -3091,7 +3300,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 @@ -3110,7 +3329,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 @@ -3123,11 +3345,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 @@ -3140,7 +3373,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 bd850f3ba3..d34636526e 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 $i32_=>_i32 (func (param 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_=>_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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -35,15 +35,6 @@ (data (i32.const 1500) " ") (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,20 +1037,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1078,11 +1063,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 @@ -1092,10 +1080,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 @@ -1162,23 +1152,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 - 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 + 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 @@ -1188,18 +1230,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 @@ -1207,17 +1249,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 @@ -1228,7 +1270,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1242,10 +1284,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 @@ -1256,14 +1298,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 @@ -1273,26 +1315,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 @@ -1302,7 +1344,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) @@ -1552,14 +1634,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 @@ -1567,156 +1664,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 @@ -1750,7 +1864,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 @@ -1762,92 +1881,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 40c16929d7..f1593b31c0 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -2,12 +2,12 @@ (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 (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_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -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,20 +1075,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1116,11 +1101,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 +1118,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 @@ -1200,44 +1190,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 @@ -1245,17 +1287,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 @@ -1266,7 +1308,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1280,10 +1322,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 @@ -1294,14 +1336,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 @@ -1311,26 +1353,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 @@ -1340,7 +1382,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 @@ -1385,234 +1467,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 5f41094331..f5e83da70c 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -1,10 +1,14 @@ (module +<<<<<<< HEAD +======= (type $i32_=>_i32 (func (param i32) (result i32))) +>>>>>>> master (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 $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 +106,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 +151,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 +179,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -246,7 +202,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -256,15 +212,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 +261,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 +590,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 +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 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1029,7 +1017,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 +1102,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18580 i32.ge_u if @@ -1119,13 +1112,21 @@ 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 +<<<<<<< HEAD + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 +======= i32.const 1 local.get $1 select @@ -1133,6 +1134,7 @@ i32.const 1 else local.get $0 +>>>>>>> master i32.load i32.const 1 i32.and @@ -1145,11 +1147,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 +1164,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 +1236,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 @@ -1255,18 +1314,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 @@ -1274,17 +1333,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 @@ -1295,7 +1354,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1309,10 +1368,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 @@ -1323,14 +1382,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 @@ -1340,26 +1399,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 @@ -1369,7 +1428,37 @@ 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 +<<<<<<< HEAD + 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/__new (result i32) (local $0 i32) @@ -1435,6 +1524,7 @@ global.get $~lib/rt/itcms/fromSpace global.get $~lib/rt/itcms/white call $~lib/rt/itcms/Object#linkTo +>>>>>>> master global.get $~lib/rt/itcms/total local.get $0 i32.load @@ -1480,18 +1570,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 @@ -1530,422 +1632,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 + 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 4 + i32.store 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 1056 + i32.load + call_indirect $0 (type $i32_=>_i32) 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.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 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 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 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.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 - 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 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 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.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 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 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 - 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 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 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 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 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 - 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.store + local.get $0 + 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 + 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.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.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.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.sub - i32.load offset=4 + 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 d51e6053b3..691bd94c4a 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 $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-types/i32Adder (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) @@ -39,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 5e17b0b4de..f00688e1bd 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 $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_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -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,20 +1040,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - 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 + 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,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 $getter-call/C#get:x~anonymous|0 (result i32) i32.const 42 @@ -1354,138 +1436,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 de42bcadb2..0c41748546 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -1,9 +1,9 @@ (module - (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 (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_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param 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 @@ -1001,133 +1005,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 @@ -1135,18 +1929,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 @@ -1155,16 +1949,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 @@ -1173,42 +1967,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) @@ -1225,63 +1998,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 @@ -1289,24 +2062,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 @@ -1319,7 +2092,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 @@ -1331,8 +2111,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 a36623eb2b..2ff6ade2b5 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -3,9 +3,9 @@ (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_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -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,20 +1050,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1087,11 +1076,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 @@ -1101,10 +1093,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 @@ -1171,23 +1165,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 @@ -1197,18 +1243,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 @@ -1216,15 +1262,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 @@ -1251,22 +1297,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 @@ -1275,32 +1321,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 @@ -1312,70 +1358,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 @@ -1418,7 +1428,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 @@ -1451,8 +1460,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 @@ -1464,7 +1471,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1513,17 +1520,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 @@ -1535,105 +1562,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 @@ -1645,45 +1719,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 63cd697284..64f3ef092d 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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -69,15 +68,6 @@ (data (i32.const 2140) "\02\t\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\19\00\00\00\00\00\00 \00\00\00\00\00\00\00\02a\00\00\00\00\00\00\02a\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A") (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,20 +1076,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1114,11 +1102,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 @@ -1128,10 +1119,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 @@ -1152,28 +1145,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 @@ -1270,11 +1263,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.gt_u if @@ -1285,50 +1347,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 @@ -1336,18 +1402,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 @@ -1355,18 +1421,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 @@ -1378,7 +1444,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1391,12 +1457,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 @@ -1410,54 +1476,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 @@ -1467,143 +1533,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1611,7 +1716,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1644,279 +1749,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 @@ -1950,8 +2542,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 @@ -1966,7 +2556,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1996,64 +2586,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 @@ -2082,12 +2697,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 @@ -2100,7 +2714,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 @@ -2120,6 +2734,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 @@ -2131,7 +2746,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 @@ -2151,6 +2766,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 @@ -2158,7 +2774,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 @@ -2178,6 +2794,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 @@ -2216,7 +2833,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 @@ -2244,6 +2861,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 @@ -2333,7 +2951,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 @@ -2345,53 +2973,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 @@ -2408,11 +3210,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 9cb99d6bf5..0aa5029c5b 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.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_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $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_i32_=>_none (func (param i32 i32 i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -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,20 +1062,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - 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,23 +1177,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 - 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 + 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 @@ -1213,18 +1255,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 @@ -1232,17 +1274,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 @@ -1253,7 +1295,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1267,10 +1309,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 @@ -1281,14 +1323,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 @@ -1298,26 +1340,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 @@ -1327,72 +1369,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 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 $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 @@ -1486,106 +1491,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 @@ -1597,17 +1643,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 9ad6f8f8a0..3efc001b52 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1,12 +1,12 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $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_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -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,20 +1049,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - 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 @@ -1128,28 +1118,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 - i32.clz - i32.sub - local.set $2 + 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 - local.get $2 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1246,11 +1236,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.gt_u if @@ -1261,50 +1320,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 @@ -1312,18 +1375,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 @@ -1331,18 +1394,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 @@ -1354,7 +1417,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1367,12 +1430,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 @@ -1386,54 +1449,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 @@ -1443,143 +1506,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - 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,210 +1722,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 @@ -1867,59 +1766,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 81e4bf8b0d..0c7aae8a8e 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_=>_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 $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -38,15 +37,6 @@ (data (i32.const 1532) " \00\00\00\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05") (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,20 +1051,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1093,11 +1077,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 +1094,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,25 +1166,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 @@ -1203,18 +1244,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 +1263,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 +1298,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 +1322,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 +1359,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 @@ -1397,6 +1402,7 @@ ) (func $start:instanceof-class (local $0 i32) + (local $1 i32) memory.size i32.const 16 i32.shl @@ -1405,161 +1411,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 @@ -1602,17 +1670,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 8e581be84a..d234e0a29b 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_=>_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_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -38,15 +38,6 @@ (data (i32.const 1584) "\04\00\00\00 \00\00\00\00\00\00\00 ") (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,20 +1044,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1081,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 @@ -1095,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 @@ -1165,23 +1159,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 +1237,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 +1256,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 +1277,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1245,10 +1291,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 +1305,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 +1322,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,72 +1351,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 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 $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 @@ -1413,7 +1422,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 @@ -1446,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 @@ -1459,7 +1465,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1503,95 +1509,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 4b51b46fa8..b20c57acb5 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_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param 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_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -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,20 +1046,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1087,11 +1072,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 @@ -1101,10 +1089,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 @@ -1171,24 +1161,76 @@ 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 + 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 $2 + 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 $2 + i32.load offset=1568 i32.ne i32.shl i32.const 65563 @@ -1198,11 +1240,11 @@ i32.const 16 i32.shr_u local.set $1 - local.get $2 + local.get $0 local.get $1 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 @@ -1216,17 +1258,17 @@ unreachable end end - local.get $0 local.get $2 + local.get $0 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 + local.tee $0 i32.eqz if i32.const 0 @@ -1237,7 +1279,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1251,12 +1293,12 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 - local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load - local.tee $2 + local.tee $1 i32.const -4 i32.and i32.const 28 @@ -1265,43 +1307,43 @@ i32.const 16 i32.ge_u if + local.get $0 local.get $1 - 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.tee $1 local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $0 local.get $2 + local.get $1 call $~lib/rt/tlsf/insertBlock else + local.get $0 local.get $1 - 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 $2 + local.get $0 i32.load i32.const -4 i32.and i32.add + local.get $2 local.get $0 - local.get $1 i32.load i32.const -4 i32.and @@ -1311,72 +1353,108 @@ i32.and i32.store end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 12 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) - (local $1 i32) - (local $2 i32) + global.get $~lib/rt/itcms/white + 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 + 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 + local.tee $2 + i32.const 0 + i32.store8 + local.get $2 + i32.const 12 + i32.add + local.tee $0 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $2 + i32.const 0 + i32.store8 offset=1 + local.get $2 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $2 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $2 + i32.const 0 + local.get $2 + i32.sub + i32.const 3 + i32.and + local.tee $1 + i32.add + local.tee $0 + i32.const 0 + i32.store + i32.const 12 + local.get $1 + i32.sub + i32.const -4 + i32.and + local.tee $3 + local.get $0 + i32.add + local.tee $1 + i32.const 4 + i32.sub + i32.const 0 + i32.store block $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 12 - i32.add - local.tee $1 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - 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 - local.tee $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $2 + local.get $3 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1396,7 +1474,7 @@ i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1441,7 +1519,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1474,6 +1552,7 @@ end end end + local.get $2 ) (func $issues/1225/normal (result i32) global.get $issues/1225/x @@ -1483,9 +1562,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 @@ -1494,14 +1601,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 @@ -1519,85 +1641,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 @@ -1681,36 +1730,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 7845af5896..503f16a35c 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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -42,15 +41,6 @@ (data (i32.const 1740) " \00\00\00\00\00\00\00\02A") (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,20 +1051,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1089,11 +1077,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 +1094,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 +1120,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,271 +1238,72 @@ 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.gt_u - if - i32.const 1152 - i32.const 1488 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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.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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 i32.sub i32.const -4 @@ -1622,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 @@ -1639,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 @@ -1660,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 @@ -1680,50 +1479,263 @@ 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.gt_u if - return - end + i32.const 1152 + i32.const 1488 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.tee $2 + local.get $6 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $3 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $5 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $6 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + i32.const 0 + i32.const 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 @@ -1752,8 +1764,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 @@ -1768,7 +1778,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1779,187 +1789,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.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 + 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 - 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) @@ -1970,6 +2554,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 @@ -1989,16 +2575,16 @@ local.get $1 i32.const 1 i32.add - local.tee $10 - local.tee $4 + local.tee $8 + local.tee $5 local.get $0 i32.load offset=8 - local.tee $6 + local.tee $11 i32.const 2 i32.shr_u i32.gt_u if - local.get $4 + local.get $5 i32.const 268435455 i32.gt_u if @@ -2011,38 +2597,38 @@ end local.get $0 i32.load - local.tee $8 + local.tee $10 local.set $3 block $__inlined_func$~lib/rt/itcms/__renew - local.get $6 + local.get $11 i32.const 1 i32.shl - local.tee $5 + local.tee $6 i32.const 1073741820 - local.get $5 + local.get $6 i32.const 1073741820 i32.lt_u select - local.tee $5 - local.get $4 + local.tee $4 + local.get $5 i32.const 8 - local.get $4 + local.get $5 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $4 + local.tee $6 local.get $4 - local.get $5 - i32.lt_u + local.get $6 + i32.gt_u select local.tee $9 local.tee $5 - local.get $8 + local.get $10 i32.const 20 i32.sub - local.tee $7 + local.tee $4 i32.load i32.const -4 i32.and @@ -2050,38 +2636,223 @@ i32.sub i32.le_u if - local.get $7 + local.get $4 local.get $5 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end local.get $5 - local.get $7 + local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $4 - local.get $3 + local.tee $7 + local.set $6 local.get $5 - local.get $7 + local.get $4 i32.load offset=16 - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 local.get $5 i32.gt_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 $5 + i32.const 1 + i32.add + local.set $6 + local.get $3 + local.tee $4 + i32.const 1 + i32.add + local.set $3 + local.get $5 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $12 + i32.const 8 + i32.ge_u + if + local.get $6 + local.get $3 + i64.load + i64.store + local.get $12 + i32.const 8 + i32.sub + local.set $12 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $3 + i32.const 8 + i32.add + local.set $3 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $12 + if + local.get $6 + local.tee $5 + i32.const 1 + i32.add + local.set $6 + local.get $3 + local.tee $4 + i32.const 1 + i32.add + local.set $3 + local.get $5 + local.get $4 + i32.load8_u + i32.store8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + br $while-continue|2 + end + end + else + local.get $3 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $6 + local.get $12 + i32.add + i32.const 7 + i32.and + if + local.get $12 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + local.get $12 + i32.const 1 + i32.sub + local.tee $12 + i32.add + local.get $3 + local.get $12 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $12 + i32.const 8 + i32.ge_u + if + local.get $6 + local.get $12 + i32.const 8 + i32.sub + local.tee $12 + i32.add + local.get $3 + local.get $12 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $12 + if + local.get $6 + local.get $12 + i32.const 1 + i32.sub + local.tee $12 + i32.add + local.get $3 + local.get $12 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + local.get $7 local.set $3 end local.get $3 - local.get $6 + local.get $11 i32.add local.get $9 - local.get $6 + local.get $11 i32.sub call $~lib/memory/memory.fill local.get $3 - local.get $8 + local.get $10 i32.ne if local.get $0 @@ -2100,7 +2871,7 @@ i32.store offset=8 end local.get $0 - local.get $10 + local.get $8 i32.store offset=12 end local.get $0 @@ -2148,61 +2919,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 32 + i32.const 0 + call $~lib/rt/itcms/__new local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 32 + 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 32 + 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 @@ -2214,170 +3179,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 32 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 32 - 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 32 - 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 @@ -2397,7 +3203,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 d831f03ad8..281aaf02b4 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 $i32_=>_i32 (func (param 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_=>_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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -35,15 +35,6 @@ (data (i32.const 1516) " ") (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,20 +1037,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1078,11 +1063,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 @@ -1092,10 +1080,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 @@ -1162,23 +1152,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 @@ -1188,18 +1230,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 @@ -1207,17 +1249,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 @@ -1228,7 +1270,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1242,10 +1284,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 @@ -1256,14 +1298,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 @@ -1273,26 +1315,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 @@ -1302,7 +1344,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 @@ -1334,9 +1416,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 @@ -1348,16 +1432,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 @@ -1369,14 +1443,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 @@ -1450,89 +1539,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 b80f75c35b..4aa2a78181 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -1,11 +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_=>_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_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -39,15 +39,6 @@ (data (i32.const 1660) " \00\00\00\04\00\00\00 ") (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,20 +1041,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1082,11 +1067,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 +1084,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 @@ -1166,25 +1156,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 @@ -1192,18 +1234,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 @@ -1211,15 +1253,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 @@ -1246,22 +1288,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 @@ -1270,32 +1312,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 @@ -1307,70 +1349,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 @@ -1384,36 +1390,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 @@ -1447,270 +1423,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) @@ -1719,43 +1841,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 72f852bc10..36b4eb652f 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -1,7 +1,7 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memcpy/dest (mut i32) (i32.const 0)) (memory $0 1) @@ -771,7 +771,7 @@ end local.get $5 ) - (func $start: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 09ffb42d76..21ae653cfb 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -1,7 +1,7 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memmove/dest (mut i32) (i32.const 0)) (memory $0 1) @@ -182,7 +182,7 @@ end end ) - (func $start: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 83644042c8..2342a4f84e 100644 --- a/tests/compiler/memory.optimized.wat +++ b/tests/compiler/memory.optimized.wat @@ -1,6 +1,5 @@ (module (type $none_=>_none (func)) - (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))) (global $memory/ptr (mut i32) (i32.const 1088)) @@ -17,7 +16,7 @@ (data (i32.const 1216) "\01") (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 ac829c5968..094e13b17d 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -1,7 +1,7 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memset/dest (mut i32) (i32.const 0)) (memory $0 1) @@ -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 c51e09d3bd..ec7fb0c94a 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -1,11 +1,11 @@ (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_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_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $new/ref (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -39,15 +39,6 @@ (data (i32.const 1468) " \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\04") (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,20 +1077,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1118,11 +1103,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 @@ -1132,10 +1120,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 @@ -1202,23 +1192,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 @@ -1228,18 +1270,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 @@ -1247,15 +1289,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 @@ -1282,22 +1324,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 @@ -1306,32 +1348,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 @@ -1343,70 +1385,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 @@ -1464,7 +1470,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 @@ -1476,14 +1492,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 @@ -1532,7 +1563,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 @@ -1544,18 +1580,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 @@ -1571,7 +1600,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 @@ -1596,11 +1635,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 @@ -1617,11 +1667,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 5f29087f77..7689283fff 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 (func (param i32) (result 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 $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))) (global $number/a (mut i32) (i32.const 1)) @@ -25,7 +23,7 @@ (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 19612)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 21068)) (memory $0 1) (data (i32.const 1036) "|") (data (i32.const 1048) "\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") @@ -43,91 +41,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\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) @@ -1902,7 +1889,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 @@ -1916,15 +1903,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -1932,20 +1922,20 @@ i32.eqz 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 @@ -1958,33 +1948,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 @@ -2011,6 +2001,7 @@ i32.sub local.tee $9 i64.extend_i32_s + local.tee $0 i64.shl local.tee $10 i64.const 1 @@ -2019,12 +2010,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 @@ -2154,7 +2190,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2000 + i32.const 3456 i32.add local.get $3 i32.const 65535 @@ -2189,7 +2225,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 2928 + i32.const 4384 i32.add i64.load32_u local.get $9 @@ -2199,28 +2235,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 @@ -2231,12 +2251,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 @@ -2244,8 +2282,8 @@ br $while-continue|3 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 return @@ -2277,7 +2315,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2000 + i32.const 3456 i32.add local.get $6 i32.wrap_i64 @@ -2315,7 +2353,7 @@ i32.sub i32.const 2 i32.shl - i32.const 2928 + i32.const 4384 i32.add i64.load32_u i64.mul @@ -2323,28 +2361,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 @@ -2355,12 +2377,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 @@ -2368,1365 +2408,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.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 - 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 + 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 - local.get $0 - i32.const 1 + i32.load offset=11 + local.tee $3 + 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 $1 - i32.const 2000 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 + i32.or + i32.store offset=8 + local.get $0 local.get $1 - local.tee $2 - i32.const 4 - i32.add + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl 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 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 local.get $1 - call $~lib/util/number/decimalCount32 - i32.const 1 + i32.const 16 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.set $1 local.get $0 - local.get $1 - i32.add - i32.const 2 + 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 (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 5b0e6ed6ba..48e60473ad 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_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (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))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -48,48 +47,10 @@ (data (i32.const 1748) " ") (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 @@ -975,12 +942,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) @@ -1027,7 +997,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 @@ -1090,7 +1065,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,10 +1156,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 @@ -1200,28 +1182,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 @@ -1334,23 +1316,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 @@ -1358,25 +1360,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 @@ -1403,7 +1390,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1411,8 +1398,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 @@ -1425,7 +1412,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -1439,13 +1426,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 @@ -1461,33 +1448,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 @@ -1517,43 +1504,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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 + 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 + local.tee $2 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + 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 @@ -1566,11 +1653,11 @@ i32.sub i32.const 0 i32.store8 - 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 @@ -1578,30 +1665,30 @@ i32.sub 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 i32.and local.tee $2 i32.add - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 @@ -1610,18 +1697,18 @@ 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 @@ -1630,40 +1717,40 @@ 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 @@ -1704,96 +1791,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) @@ -1821,7 +1819,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 @@ -1835,15 +1833,18 @@ 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 + local.set $3 + local.get $2 + i32.const 7 + i32.and + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -1851,20 +1852,20 @@ i32.eqz 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 @@ -1877,33 +1878,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 @@ -1911,1253 +1912,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 - 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 + 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 $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 - 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 - end - local.get $0 - i32.load offset=4 - local.tee $0 + local.get $2 + i32.const 16 + 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 + 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 - 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 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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 - ) - (func $object-literal/testOmittedFoo (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer + local.get $2 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 - 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.const 0 - i32.const 1504 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=12 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=16 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=20 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=24 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + i32.and if - i32.const 0 - i32.const 1504 - i32.const 113 - 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 - 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 + local.get $2 + i32.const 4 + i32.and if - i32.const 0 - i32.const 1504 - i32.const 114 - 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 $0 - i32.load offset=32 + local.get $2 + i32.const 2 + i32.and if - i32.const 0 - i32.const 1504 - i32.const 115 - 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 $0 - i32.load offset=36 - i32.const -1 - i32.ne + local.get $2 + i32.const 1 + i32.and if - i32.const 0 - i32.const 1504 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 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) + (func $~lib/rt/__visit_members (param $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 - i32.const 0 - i32.const 1504 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort + 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 - 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 - i32.const 0 - i32.const 1504 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 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.const 20 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 + 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.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 + 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.const 1504 - i32.const 28 + i32.store + local.get $1 + i32.const 8 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 + 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.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 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + 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 + 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 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 0 + 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 057d6c10fe..215d715993 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1,10 +1,10 @@ (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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -35,15 +35,6 @@ (data (i32.const 1468) " \00\00\00\00\00\00\00 ") (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,20 +1049,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - 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 + 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 @@ -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 @@ -1430,87 +1436,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 be5135ec7e..42cc8af75c 100644 --- a/tests/compiler/possibly-null.optimized.wat +++ b/tests/compiler/possibly-null.optimized.wat @@ -2,7 +2,6 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17408)) (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 4374159d94..d6cf608c9e 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -1,12 +1,12 @@ (module (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_i32_=>_none (func (param i32 i32 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_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -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,20 +1126,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1167,11 +1152,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 @@ -1181,10 +1169,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 @@ -1251,44 +1241,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 + 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 @@ -1296,15 +1338,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 @@ -1331,22 +1373,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 @@ -1355,32 +1397,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 @@ -1392,70 +1434,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 @@ -1568,7 +1574,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 @@ -1580,14 +1596,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 @@ -1614,7 +1645,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 @@ -1626,13 +1661,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 @@ -1658,34 +1686,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 @@ -1695,7 +1747,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 @@ -1719,15 +1781,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 @@ -1737,52 +1811,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 015cd805e3..211ab5d6e7 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_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -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,20 +1088,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1129,11 +1114,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 @@ -1143,10 +1131,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 @@ -1213,25 +1203,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 @@ -1239,18 +1281,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 @@ -1258,17 +1300,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 @@ -1279,7 +1321,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1293,10 +1335,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 @@ -1307,14 +1349,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 @@ -1324,26 +1366,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 @@ -1353,72 +1395,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 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 $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 @@ -1503,99 +1508,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 @@ -1607,18 +1648,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 74a7e54293..e4af9d5ab6 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))) @@ -19,7 +18,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 18276)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19732)) (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1052) "\08\00\00\00\01") @@ -41,24 +40,18 @@ (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 ") (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,20 +1062,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1095,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 @@ -1109,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 @@ -1133,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 @@ -1251,11 +1249,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.gt_u if @@ -1266,50 +1333,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 @@ -1317,18 +1388,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 @@ -1336,18 +1407,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 @@ -1359,7 +1430,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1372,12 +1443,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 @@ -1391,54 +1462,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 @@ -1448,143 +1519,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1592,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 @@ -1625,148 +1735,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 + 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 $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 + 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 @@ -1775,77 +2760,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 @@ -1854,17 +2839,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 @@ -1874,15 +2859,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 @@ -1891,148 +2876,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 @@ -2050,13 +2990,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 @@ -2066,53 +3050,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 @@ -2120,30 +3110,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 @@ -2153,109 +3203,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 @@ -2283,11 +3252,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 @@ -2308,11 +3288,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 @@ -2335,65 +3326,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 667df202b6..346530940b 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1,13 +1,13 @@ (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 $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-binary/a (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -26,7 +26,7 @@ (global $resolve-binary/foo (mut i32) (i32.const 0)) (global $resolve-binary/bar (mut i32) (i32.const 0)) (global $resolve-binary/bar2 (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20060)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 27676)) (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1048) "\01\00\00\00\08\00\00\00t\00r\00u\00e") @@ -52,57 +52,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 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 10 - i32.rem_u - i32.const 48 + i32.const 2 + i32.shl + i32.const 1820 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 1408 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end - i32.const 0 + i32.load + i32.store + else local.get $0 + local.get $2 + i32.const 1 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.store - local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa_dec_simple + 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) @@ -2058,6 +2179,7 @@ i32.sub local.tee $9 i64.extend_i32_s + local.tee $0 i64.shl local.tee $10 i64.const 1 @@ -2066,12 +2188,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 @@ -2201,7 +2368,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2144 + i32.const 9760 i32.add local.get $3 i32.const 65535 @@ -2236,7 +2403,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 3072 + i32.const 10688 i32.add i64.load32_u local.get $9 @@ -2246,28 +2413,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 @@ -2278,12 +2429,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 @@ -2291,8 +2460,8 @@ br $while-continue|3 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 return @@ -2324,7 +2493,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2144 + i32.const 9760 i32.add local.get $6 i32.wrap_i64 @@ -2362,7 +2531,7 @@ i32.sub i32.const 2 i32.shl - i32.const 3072 + i32.const 10688 i32.add i64.load32_u i64.mul @@ -2370,28 +2539,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 @@ -2402,12 +2555,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 @@ -2415,1903 +2586,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 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.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 + 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 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 + local.get $2 + i32.const 8 + i32.and if - i32.const 0 - i32.const 1120 - i32.const 53 + 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 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 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.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 - 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 $0 + local.get $1 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 $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.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 $0 + local.get $1 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 $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 + 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 4 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 + 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 -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 + local.get $2 + i32.const 2 + i32.and if - i32.const 0 - i32.const 1120 - i32.const 122 - 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 - 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 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.const 1120 - i32.const 127 + local.get $4 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - 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 + ) + (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 132 + 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 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - local.set $0 - i32.const 2 - local.set $1 - i32.const 1 - local.set $2 - loop $while-continue|0 - local.get $1 - if + local.get $2 + i32.le_s + select + if (result i32) + loop $for-loop|0 local.get $0 local.get $2 - i32.mul + 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 + 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 + local.get $2 + i32.const 0 + i32.gt_s + select + if (result i32) local.get $2 - local.get $1 i32.const 1 - i32.and - select - local.set $2 + 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.shr_u - local.set $1 - local.get $0 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + i32.const 46 + i32.store16 local.get $0 - i32.mul - local.set $0 - br $while-continue|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 - 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 - end - i32.const 4 - 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 3168 - i32.store offset=4 - local.get $0 - i32.const 3168 - call $~lib/string/String.__eq - i32.eqz + i32.const 11292 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 165 + i32.const 27696 + i32.const 27744 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 - i32.const 0 - i32.const 1120 - i32.const 170 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.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3200 - 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 3200 - 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/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 182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + 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 - 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 187 - 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 + 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.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 + i64.const 2147483647 + i64.mul local.get $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 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 + local.get $3 + i32.const 1 + i32.shl + local.tee $4 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 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 - 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 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 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 3 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) @@ -4319,11 +5532,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 13caa7d050..f028db980e 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1,9 +1,8 @@ (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 (func (param 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 $none_=>_i32 (func (result i32))) @@ -13,6 +12,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -32,7 +32,7 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $resolve-elementaccess/buf (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19780)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 21236)) (memory $0 1) (data (i32.const 1036) ",") (data (i32.const 1048) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") @@ -61,41 +61,35 @@ (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.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.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 - 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 $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 1776 - i32.const 45 - i32.store16 + local.get $2 + i32.const 16 + i32.and + if local.get $0 - f64.neg + 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 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 1776 + i32.const 45 + i32.store16 + local.get $0 + f64.neg else 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 @@ -2787,51 +3764,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 @@ -2840,9 +3818,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 @@ -2850,18 +3828,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 @@ -2869,52 +3847,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 @@ -2923,14 +3901,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 @@ -2940,24 +3918,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 @@ -2969,27 +3947,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 @@ -2998,8 +3976,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 @@ -3030,7 +4008,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 @@ -3128,7 +4116,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 @@ -3142,15 +4130,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -3158,20 +4149,20 @@ i32.eqz 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 @@ -3184,33 +4175,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 @@ -3264,7 +4255,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 @@ -3279,479 +4280,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) @@ -3759,7 +4836,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 71cd919e1f..6b1d64e078 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_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -18,7 +18,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)) (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1048) "\03\00\00\00\08\00\00\00\01") @@ -44,11 +44,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 $0 (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) (export "memory" (memory $0)) @@ -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,20 +1077,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1113,11 +1103,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 @@ -1127,10 +1120,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 @@ -1151,28 +1146,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 - i32.clz - i32.sub - local.set $2 + 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 - local.get $2 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1269,10 +1264,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.gt_u @@ -1284,50 +1348,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 @@ -1335,18 +1403,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 @@ -1354,18 +1422,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 @@ -1376,8 +1444,8 @@ unreachable end end - local.get $2 local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -1390,13 +1458,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 @@ -1412,51 +1480,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 @@ -1466,143 +1534,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 4 i32.and i32.const 24 @@ -1610,7 +1717,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $4 local.get $1 i32.sub local.set $1 @@ -1643,102 +1750,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 @@ -1773,22 +1785,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) @@ -1798,291 +1794,411 @@ 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.const 1 + i32.store + block $__inlined_func$~lib/util/number/itoa32 local.get $1 - local.tee $0 - i32.const 4 - i32.ge_u - select i32.eqz if - loop $do-continue|01 + 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 + i32.sub + local.get $1 + local.get $1 + i32.const 31 + i32.shr_u + local.tee $4 + select + 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 + i32.const 3408 + i32.const 0 + local.get $1 + select + 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.const 1 + local.get $2 + local.tee $1 + i32.const 4 + i32.ge_u + select + i32.eqz 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 7bf4da8027..1b85176177 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 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,20 +1046,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1087,11 +1072,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 @@ -1101,10 +1089,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 @@ -1171,44 +1161,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 @@ -1216,15 +1258,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 @@ -1251,22 +1293,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 @@ -1275,32 +1317,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 @@ -1312,70 +1354,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,172 +1439,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 e72ec5e10b..d015ce8fa5 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 $i32_=>_i32 (func (param 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_=>_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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -34,15 +34,6 @@ (data (i32.const 1468) " ") (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,20 +1042,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1083,11 +1068,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 @@ -1097,10 +1085,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 @@ -1167,23 +1157,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 @@ -1193,18 +1235,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 @@ -1212,17 +1254,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 @@ -1233,7 +1275,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1247,10 +1289,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 @@ -1261,14 +1303,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 @@ -1278,26 +1320,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 @@ -1307,7 +1349,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 @@ -1340,11 +1422,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 @@ -1356,28 +1449,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 @@ -1389,92 +1503,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 91ea81aaf0..5c60253bf6 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 (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_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -18,7 +18,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 18644)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20100)) (memory $0 1) (data (i32.const 1036) "|") (data (i32.const 1048) "\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") @@ -36,47 +36,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) "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) " ") (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,20 +1077,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1113,11 +1103,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 @@ -1127,10 +1120,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 @@ -1151,28 +1146,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 - i32.clz - i32.sub - local.set $2 + 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 - local.get $2 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1269,11 +1264,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.gt_u if @@ -1284,50 +1348,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 @@ -1335,18 +1403,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 @@ -1354,18 +1422,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 @@ -1377,7 +1445,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1390,12 +1458,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 @@ -1409,54 +1477,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 @@ -1466,143 +1534,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1610,7 +1717,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1643,219 +1750,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) @@ -1883,7 +1778,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 @@ -1897,15 +1792,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -1913,20 +1811,20 @@ i32.eqz 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 @@ -1939,33 +1837,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 @@ -2005,19 +1903,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) @@ -2025,310 +1910,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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - 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 - if - i32.const 0 - i32.const 1808 - i32.const 92 + 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 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + if + 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 b3c3c6afb7..51fd751aea 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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -22,7 +22,7 @@ (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 19572)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 21028)) (memory $0 1) (data (i32.const 1036) "|") (data (i32.const 1048) "\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") @@ -40,89 +40,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$\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.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 + 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.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 return end local.get $0 @@ -1835,7 +1886,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 @@ -1849,15 +1900,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -1865,20 +1919,20 @@ i32.eqz 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 @@ -1891,33 +1945,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 @@ -1944,6 +1998,7 @@ i32.sub local.tee $9 i64.extend_i32_s + local.tee $0 i64.shl local.tee $10 i64.const 1 @@ -1952,12 +2007,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 @@ -2087,7 +2187,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2016 + i32.const 3472 i32.add local.get $3 i32.const 65535 @@ -2122,7 +2222,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 2944 + i32.const 4400 i32.add i64.load32_u local.get $9 @@ -2132,28 +2232,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 @@ -2164,12 +2248,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 @@ -2177,8 +2279,8 @@ br $while-continue|3 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 return @@ -2210,7 +2312,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 2016 + i32.const 3472 i32.add local.get $6 i32.wrap_i64 @@ -2248,7 +2350,7 @@ i32.sub i32.const 2 i32.shl - i32.const 2944 + i32.const 4400 i32.add i64.load32_u i64.mul @@ -2256,28 +2358,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 @@ -2288,12 +2374,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 @@ -2301,765 +2405,1648 @@ 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.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 - br $while-continue|4 + 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/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 - local.get $0 - i32.const 1 + i32.load offset=11 + local.tee $3 + 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 $1 - i32.const 2016 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 + i32.or + i32.store offset=8 + local.get $0 local.get $1 - local.tee $2 - i32.const 4 - i32.add + i32.load offset=15 + local.tee $5 + i32.const 24 + i32.shl 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 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 local.get $1 - call $~lib/util/number/decimalCount32 - i32.const 1 + i32.const 16 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.set $1 local.get $0 - local.get $1 - i32.add - i32.const 2 + 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 (result i32) - (local $0 i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) + 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 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 $5 i32) 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 + 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 $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 - i32.add - ) - (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) - local.get $0 - i32.const 2 - i32.add - ) - (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.tee $3 + i32.const 21 + i32.le_s + i32.const 0 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 $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 8 + 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 - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + local.set $1 end - return + 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 - 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 + (func $start:resolve-ternary~anonymous|0 (param $0 i32) (result i32) 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 + ) + (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1776 - i32.store offset=4 + i32.const 2 + i32.add + ) + (func $resolve-ternary/g1 (param $0 i32) (result i32) 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 7b6a6845ab..3cb3074983 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 (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_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -22,7 +22,7 @@ (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)) (memory $0 1) (data (i32.const 1036) "|") (data (i32.const 1048) "\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") @@ -40,51 +40,45 @@ (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 ") (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,20 +1097,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1133,11 +1123,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 @@ -1147,10 +1140,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 @@ -1171,28 +1166,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 - i32.clz - i32.sub - local.set $2 + 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 - local.get $2 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 i32.const 4 i32.sub i32.shr_u @@ -1289,11 +1284,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.gt_u if @@ -1304,50 +1368,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 @@ -1355,18 +1423,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 @@ -1374,18 +1442,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 @@ -1397,7 +1465,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1410,12 +1478,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 @@ -1429,54 +1497,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 @@ -1486,143 +1554,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1630,7 +1737,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1663,219 +1770,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) @@ -1903,7 +1798,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 @@ -1917,15 +1812,18 @@ 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 + local.set $3 + local.get $2 + i32.const 7 + i32.and + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -1933,20 +1831,20 @@ i32.eqz 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 @@ -1959,33 +1857,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 @@ -2028,588 +1926,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 9e27ca3ff8..8b15381f84 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.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_i32_i32_=>_none (func (param i32 i32 i32 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_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $rt/finalize/expect (mut i32) (i32.const 0)) (global $rt/finalize/ran (mut i32) (i32.const 0)) @@ -38,15 +38,6 @@ (data (i32.const 1516) " ") (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,97 +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.const 1 - local.get $1 - select - if (result i32) - i32.const 1 - else - local.get $0 - i32.load - i32.const 1 - i32.and - end - 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 @@ -989,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 @@ -1052,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 @@ -1110,15 +1008,102 @@ 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.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + 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 @@ -1185,23 +1170,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 @@ -1211,18 +1248,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 @@ -1230,17 +1267,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 @@ -1251,7 +1288,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1265,10 +1302,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 @@ -1279,14 +1316,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 @@ -1296,26 +1333,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 @@ -1325,11 +1362,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 $~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:rt/finalize + (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 @@ -1338,14 +1449,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 @@ -1363,82 +1489,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 @@ -1491,42 +1546,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 e03dcde890..2f088c4a51 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_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -43,15 +42,6 @@ (data (i32.const 1532) " \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04") (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,20 +1080,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1122,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 @@ -1136,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 @@ -1206,25 +1195,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 @@ -1232,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 @@ -1251,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 @@ -1286,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 @@ -1310,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 @@ -1347,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 @@ -1424,43 +1429,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 @@ -1472,14 +1457,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 @@ -1495,9 +1495,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 @@ -1515,9 +1541,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 @@ -1535,9 +1587,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 @@ -1556,9 +1634,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 @@ -1576,9 +1680,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 @@ -1597,9 +1727,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 @@ -1636,9 +1792,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 @@ -1656,9 +1838,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 @@ -1686,9 +1894,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 @@ -1707,9 +1941,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 @@ -1737,9 +1997,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 @@ -1758,9 +2044,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 @@ -1774,24 +2086,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 @@ -1840,7 +2153,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 @@ -1852,13 +2169,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 @@ -1882,7 +2192,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 @@ -1912,11 +2232,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 747c93b33d..f6d53b32c4 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_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (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_i32_=>_none (func (param 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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -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,20 +1055,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1097,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 @@ -1111,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 @@ -1135,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 @@ -1253,11 +1242,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.gt_u if @@ -1268,50 +1326,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 @@ -1319,18 +1381,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 @@ -1338,18 +1400,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 @@ -1361,7 +1423,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1374,12 +1436,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 @@ -1393,54 +1455,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 @@ -1450,143 +1512,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1594,7 +1695,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1627,105 +1728,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 @@ -1747,14 +1755,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 @@ -1786,10 +1815,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 @@ -1862,14 +1910,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 36b6d327b9..3971c2f831 100644 --- a/tests/compiler/rt/runtime-minimal-export.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -1,11 +1,11 @@ (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_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) @@ -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.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 125 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $6 i32.const 1073741820 i32.gt_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.gt_u - if - i32.const 1056 - i32.const 1120 - i32.const 125 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $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 - call $~lib/rt/tcms/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/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,15 +1329,15 @@ 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.const 1 - local.get $4 + local.get $0 select if (result i32) i32.const 1 @@ -1348,14 +1375,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 @@ -1373,11 +1402,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) @@ -1407,14 +1455,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 469b44d8ea..7a9ee9f9ef 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 0f0a2e0020..9a51f91861 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -1,18 +1,16 @@ (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 (func (param i32) (result 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 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $none_=>_i64 (func (result i64))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i64_=>_i32 (func (param i64) (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))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) @@ -27,7 +25,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)) (memory $0 1) (data (i32.const 1036) "\1c") @@ -248,28 +246,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") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -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 @@ -1905,12 +1945,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) @@ -1919,11 +1962,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 @@ -1940,28 +1983,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 @@ -1969,31 +2012,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 @@ -2018,8 +2061,6 @@ end return end - i32.const 0 - local.set $3 local.get $1 local.tee $2 local.get $2 @@ -2028,6 +2069,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 @@ -2095,8 +2138,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 @@ -2144,15 +2195,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) @@ -2170,7 +2212,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 @@ -2210,49 +2254,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 @@ -2277,12 +2282,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 @@ -2300,7 +2305,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2310,15 +2315,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 @@ -2328,7 +2338,7 @@ i32.const 1 else local.get $1 - i32.const 6368 + i32.const 7824 i32.load i32.gt_u if @@ -2342,7 +2352,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 6372 + i32.const 7828 i32.add i32.load i32.const 32 @@ -2354,7 +2364,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 @@ -2424,7 +2456,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 @@ -2455,7 +2492,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 22788 + i32.const 24244 i32.lt_u if local.get $0 @@ -2487,7 +2524,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 @@ -2545,7 +2587,7 @@ unreachable end local.get $0 - i32.const 22788 + i32.const 24244 i32.lt_u if local.get $0 @@ -2573,10 +2615,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 @@ -2764,6 +2808,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 @@ -2808,7 +2853,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 @@ -2822,19 +2868,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 @@ -2854,7 +2925,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 @@ -2888,8 +2958,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 @@ -2904,7 +2972,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -2915,24 +2983,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) @@ -3126,15 +3176,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 @@ -3168,14 +3209,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 @@ -3260,13 +3312,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 @@ -3279,42 +3339,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 @@ -3356,25 +3520,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 @@ -3407,7 +3568,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 @@ -3435,7 +3606,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 @@ -3449,11 +3630,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 @@ -3462,27 +3643,27 @@ 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 i32.const 0 local.get $1 i32.const 0 - local.get $4 + local.get $2 select i32.eqz 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 @@ -3499,17 +3680,18 @@ br_if $__inlined_func$~lib/string/String.__eq drop block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $4 + local.get $2 + local.tee $4 i32.const 7 i32.and local.get $1 - local.tee $2 + local.tee $5 i32.const 7 i32.and i32.or i32.const 1 local.get $3 - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u select @@ -3518,7 +3700,7 @@ loop $do-continue|0 local.get $4 i64.load - local.get $2 + local.get $5 i64.load i64.eq if @@ -3526,14 +3708,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 @@ -3541,17 +3723,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 @@ -3565,10 +3747,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 @@ -3582,13 +3764,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 @@ -3600,191 +3782,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 - 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 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 + 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 + i32.const 24272 + i32.const 24320 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 @@ -3797,632 +4323,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 2e7a702ec9..9de827a9f0 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 (func (param 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_=>_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 $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -26,7 +26,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)) (memory $0 1) (data (i32.const 1036) ",") @@ -213,18 +213,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") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -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 @@ -1455,12 +1485,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) @@ -1507,7 +1540,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 @@ -1538,7 +1576,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 21716 + i32.const 23172 i32.lt_u if local.get $0 @@ -1570,7 +1608,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 @@ -1628,7 +1671,7 @@ unreachable end local.get $0 - i32.const 21716 + i32.const 23172 i32.lt_u if local.get $0 @@ -1656,10 +1699,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 @@ -1680,28 +1725,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 @@ -1814,23 +1859,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 @@ -1838,25 +1903,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 @@ -1883,7 +1933,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1891,8 +1941,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 @@ -1905,7 +1955,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -1919,13 +1969,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 @@ -1941,33 +1991,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 @@ -1997,18 +2047,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 @@ -2187,6 +2225,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 @@ -2231,7 +2270,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 @@ -2245,19 +2285,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 @@ -2276,7 +2341,6 @@ local.get $1 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 i32.eqz if @@ -2309,8 +2373,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 @@ -2322,7 +2384,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -2675,27 +2737,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) @@ -2720,251 +2863,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) @@ -2972,11 +3943,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 @@ -2993,68 +3964,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 @@ -3062,7 +4033,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 @@ -3073,8 +4044,6 @@ end local.get $0 local.set $1 - i32.const 0 - local.set $2 local.get $0 local.get $0 i32.const 20 @@ -3082,6 +4051,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 @@ -3149,8 +4120,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 @@ -3165,22 +4144,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 @@ -3191,21 +4170,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 @@ -3229,817 +4200,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 a631a9b92b..9e2119c4dc 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_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 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 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_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) @@ -35,7 +34,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)) (memory $0 1) (data (i32.const 1036) ",") @@ -250,14 +249,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") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -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 @@ -1893,12 +1934,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) @@ -1907,11 +1951,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 @@ -1928,28 +1972,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 @@ -1957,31 +2001,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 @@ -2008,8 +2052,6 @@ end local.get $0 local.set $1 - i32.const 0 - local.set $2 local.get $0 local.get $0 i32.const 20 @@ -2017,6 +2059,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 @@ -2084,8 +2128,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 @@ -2133,15 +2185,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) @@ -2189,7 +2232,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 @@ -2229,49 +2274,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 @@ -2296,12 +2302,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 @@ -2319,7 +2325,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2329,15 +2335,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 @@ -2347,7 +2358,7 @@ i32.const 1 else local.get $1 - i32.const 5840 + i32.const 7296 i32.load i32.gt_u if @@ -2361,7 +2372,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 5844 + i32.const 7300 i32.add i32.load i32.const 32 @@ -2373,7 +2384,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 @@ -2443,7 +2476,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 @@ -2474,7 +2512,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 22268 + i32.const 23724 i32.lt_u if local.get $0 @@ -2506,7 +2544,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 @@ -2564,7 +2607,7 @@ unreachable end local.get $0 - i32.const 22268 + i32.const 23724 i32.lt_u if local.get $0 @@ -2592,10 +2635,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 @@ -2783,6 +2828,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 @@ -2827,7 +2873,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 @@ -2841,19 +2888,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 @@ -2873,7 +2945,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 @@ -2907,8 +2978,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 @@ -2923,7 +2992,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -2934,71 +3003,836 @@ 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 + 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 @@ -3278,15 +4112,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 @@ -3560,223 +4385,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) - (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 - if - local.get $8 - i32.load offset=8 - 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 + (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.set $8 + 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 + 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) @@ -3893,25 +4692,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 @@ -3934,7 +4730,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 @@ -4040,652 +4846,1098 @@ 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 + 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 - 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 $1 + i32.const 0 + call $~lib/rt/itcms/__link 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.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 - local.get $7 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $4 + 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 - 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 $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 + 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 - i32.const 1 - i32.shr_u - local.tee $6 - i32.eqz - if - i32.const 0 - local.set $0 - br $__inlined_func$~lib/string/String#indexOf - end - local.get $3 - i32.const 20 + local.tee $0 + local.get $0 + local.get $8 + i32.add + local.get $4 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + call $~lib/string/String.UTF8.decodeUnsafe local.tee $2 - i32.eqz - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/string/String#indexOf - end - i32.const 0 - local.get $2 - local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=8 i32.const 0 - i32.gt_s - select local.set $0 - local.get $2 - local.get $6 - i32.sub - local.set $2 - loop $for-loop|00 - local.get $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.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 + 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 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + 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 - 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 + i32.xor + if + local.get $2 + i32.const 0 + local.get $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 1 + 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 + local.get $3 + 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 $2 + i32.const 5136 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set + end + local.get $5 i32.const 1 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 - 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 + local.set $5 + br $for-loop|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|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 - 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 + i32.const 23744 + i32.const 23792 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable ) (func $start:std-wasi/process (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i64) + (local $2 i64) + (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 - 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 + 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 - 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 + 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/console/console.log + 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 - i32.const 1 - i32.add - local.set $0 - br $for-loop|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 - 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 $7 + 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.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.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.and + i32.eqz + if + 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 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|002 + end + end local.get $6 - i32.lt_s - if + local.get $0 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $1 - 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.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 - i32.load - local.tee $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 - local.get $2 - local.get $0 + 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 5280 + i32.const 5344 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + 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 $5 - call $~lib/array/Array<~lib/string/String>#__set - local.get $0 i32.const 1 i32.add - local.set $0 + local.set $5 + br $for-loop|1 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 end - end - local.get $2 - local.get $0 - i32.const 0 - call $~lib/array/ensureCapacity - 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 - local.get $0 - local.get $2 - i32.lt_s + 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 - 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 + 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 - i32.store offset=4 + 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 $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 + 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 $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 $2 + local.get $1 + call $~lib/util/number/utoa64_dec_lut + end 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 if - i32.const 5280 - i32.const 5344 - i32.const 105 - i32.const 17 - call $~lib/wasi/index/abort - unreachable + local.get $0 + i32.const 45 + i32.store16 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 - local.get $3 - i64.eqz + 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 + local.get $1 + 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 + 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 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 + 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 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 + i32.store offset=4 local.get $3 - i64.const 4294967295 - i64.le_u + i32.const 20 + i32.sub + i32.load offset=16 + local.set $1 + i32.const 1088 + local.get $3 + 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) @@ -4695,11 +5947,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 @@ -4707,7 +5970,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 @@ -4747,7 +6014,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 @@ -4773,7 +6044,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 @@ -4965,117 +6246,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 @@ -5122,7 +6309,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 @@ -5159,7 +6356,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 @@ -5239,224 +6446,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 54aff8e8bc..ead727b809 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -1,7 +1,6 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17692)) @@ -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.const 1 @@ -72,20 +70,20 @@ i32.eqz 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 99 - 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 99 + 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 3059bc7f48..c4d0037a4b 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1,12 +1,11 @@ (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_=>_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))) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 1424)) @@ -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,20 +1135,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1173,11 +1161,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 @@ -1187,10 +1178,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 @@ -1211,28 +1204,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 @@ -1329,11 +1322,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.gt_u if @@ -1344,50 +1406,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 @@ -1395,18 +1461,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 @@ -1414,18 +1480,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 @@ -1437,7 +1503,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1450,12 +1516,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 @@ -1469,54 +1535,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 @@ -1526,143 +1592,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1670,7 +1775,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1703,106 +1808,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 @@ -1836,8 +1845,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 @@ -1852,7 +1859,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1863,16 +1870,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 @@ -1964,7 +1961,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 @@ -1976,21 +1980,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 @@ -2134,14 +2131,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 @@ -2151,22 +2163,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 @@ -2176,7 +2191,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 @@ -2251,32 +2266,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 @@ -2497,11 +2515,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 @@ -2541,11 +2570,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 @@ -2563,11 +2603,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 110b0a836d..a6fa3002aa 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -2,22 +2,20 @@ (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_i32_i32_=>_i32 (func (param i32 i32 i32 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_=>_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 $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i64_=>_none (func (param i64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) @@ -52,7 +50,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)) (memory $0 1) (data (i32.const 1036) ",") @@ -442,146 +440,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 $0 (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) (export "ArrayU32" (global $std/array/ArrayU32)) @@ -671,15 +672,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) @@ -695,7 +687,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 @@ -703,7 +695,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 @@ -743,49 +737,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 @@ -810,12 +765,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 @@ -833,7 +788,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -843,15 +798,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 @@ -861,7 +821,7 @@ i32.const 1 else local.get $1 - i32.const 13232 + i32.const 14688 i32.load i32.gt_u if @@ -875,7 +835,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 13236 + i32.const 14692 i32.add i32.load i32.const 32 @@ -887,7 +847,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 @@ -1194,12 +1176,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 @@ -1449,10 +1431,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 @@ -1463,7 +1445,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 29984 + i32.const 31440 i32.add i32.const 0 i32.store offset=4 @@ -1481,7 +1463,7 @@ i32.add i32.const 2 i32.shl - i32.const 29984 + i32.const 31440 i32.add i32.const 0 i32.store offset=96 @@ -1499,20 +1481,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) @@ -2259,8 +2249,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 @@ -2297,6 +2287,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 @@ -2341,7 +2332,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 @@ -2355,24 +2347,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 @@ -2388,7 +2405,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 @@ -2422,8 +2438,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 @@ -2438,7 +2452,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -2449,609 +2463,1020 @@ 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 99 - 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 99 - 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/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $4 - 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 17 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - local.get $2 - i32.shl - local.set $1 - local.get $4 - local.set $5 - local.get $0 - i32.load - local.tee $6 - local.set $4 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $3 - if (result i32) - local.get $5 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - else - local.get $1 - end - local.tee $2 - local.get $4 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 + local.get $1 + i32.const 7 i32.and - i32.const 16 - i32.sub - i32.le_u + local.get $0 + i32.const 7 + i32.and + i32.eq if - local.get $3 - local.get $2 - i32.store offset=16 + 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 - 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 $2 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $4 - local.get $2 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_u - select - call $~lib/memory/memory.copy - end - local.get $1 - local.get $5 - i32.add - i32.const 0 - local.get $2 - 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 $2 - i32.store offset=8 end ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (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.tee $3 - i32.const 1 - i32.add + 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.tee $2 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - i32.load offset=4 local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $4 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $4 + local.get $3 + local.get $4 + i32.lt_s + select + end + local.tee $3 + i32.lt_s + if + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $3 + local.get $2 + i32.sub + call $~lib/memory/memory.fill + end 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) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -3067,85 +3492,64 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 2 - i32.shl i32.add - i32.load + i32.load8_u ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) + (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 $1 - i32.const 1 - i32.lt_s + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne if - i32.const 2176 - i32.const 1104 - i32.const 276 - i32.const 21 - call $~lib/builtins/abort - unreachable + i32.const 0 + return 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.eq + if + 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 - 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 - i32.const 0 - call $~lib/array/ensureCapacity - 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) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result 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 132 - i32.const 33 + i32.const 99 + i32.const 42 call $~lib/builtins/abort unreachable end @@ -3157,163 +3561,179 @@ 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 + (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 $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.tee $3 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.load offset=12 + i32.ne + if i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select + return end - local.tee $1 - i32.const 2 - i32.shl - 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 $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 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 + 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 - local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 + i32.const 1 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - local.get $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) + i32.load offset=8 + local.tee $5 local.get $2 - i32.eqz + i32.shr_u + i32.gt_u if - local.get $0 - i32.load offset=12 - local.tee $2 local.get $1 - i32.load offset=12 - i32.ne + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u if - i32.const 0 - return + i32.const 1056 + i32.const 1104 + i32.const 17 + i32.const 48 + call $~lib/builtins/abort + unreachable end local.get $0 + i32.load + local.set $4 local.get $1 - i32.eq - if - i32.const 1 - return - end - end - loop $for-loop|0 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 + i32.shl + local.set $2 + block $__inlined_func$~lib/rt/itcms/__renew (result i32) local.get $3 - call $~lib/array/Array#__get - i32.ne if - i32.const 0 - return + local.get $5 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1073741820 + local.get $1 + i32.const 1073741820 + i32.lt_u + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_u + select + local.set $2 + end + local.get $2 + local.get $4 + local.tee $1 + i32.const 20 + i32.sub + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $2 + i32.store offset=16 + local.get $1 + br $__inlined_func$~lib/rt/itcms/__renew end + local.get $2 + local.get $6 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $1 + local.get $2 + local.get $6 + i32.load offset=16 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_u + select + call $~lib/memory/memory.copy local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 end + local.tee $1 + local.get $5 + i32.add + i32.const 0 + local.get $2 + local.get $5 + 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 $2 + i32.store offset=8 end - i32.const 1 ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) + (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 @@ -3322,17 +3742,10 @@ call $~lib/array/ensureCapacity 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 + i32.add local.get $1 i32.store local.get $0 @@ -3340,169 +3753,93 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - 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.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select + i32.ge_u if - i32.const -1 - return + i32.const 1344 + i32.const 1104 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.const 0 + 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 - 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 2176 + i32.const 1104 + i32.const 276 + i32.const 21 + call $~lib/builtins/abort + unreachable 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 - 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#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 + local.get $1 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.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load 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 + local.get $1 + i32.store offset=12 ) - (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 + (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#lastIndexOf + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 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 - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 115 - 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 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 1344 + i32.const 1104 + i32.const 132 + i32.const 33 + call $~lib/builtins/abort + unreachable end local.get $0 i32.load offset=4 @@ -3510,138 +3847,266 @@ 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 + i32.load ) - (func $~lib/array/Array#findIndex (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) - if - local.get $2 - 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|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.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 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 $~lib/array/Array#every (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 + i32.lt_s + 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) - i32.eqz + local.get $3 + call $~lib/array/Array#__get + i32.ne if 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 + i32.const 1 + call $~lib/array/ensureCapacity + 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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 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 @@ -3674,53 +4139,7 @@ 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 - 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 - i32.const 1 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - ) - (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const -1 i32.le_s @@ -3753,47 +4172,6 @@ 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 @@ -4005,52 +4383,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 @@ -4084,47 +4416,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 @@ -4132,68 +4428,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 @@ -4236,7 +4568,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 @@ -4473,148 +4815,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 @@ -4650,7 +4859,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 @@ -4887,139 +5106,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) @@ -5085,12 +5171,22 @@ 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 + 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 + call $~lib/memory/memory.fill + local.get $1 i32.const 1 i32.sub local.set $4 @@ -5332,7 +5428,7 @@ (local $8 i32) local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 1 i32.le_s if @@ -5341,20 +5437,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 @@ -5362,30 +5458,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 @@ -5402,7 +5499,7 @@ i32.ge_s if block $while-break|1 - local.get $5 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -5413,7 +5510,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 @@ -5424,7 +5521,7 @@ i32.const 1 i32.sub local.set $1 - local.get $5 + local.get $3 local.get $2 i32.const 1 i32.add @@ -5437,7 +5534,7 @@ end end end - local.get $5 + local.get $3 local.get $1 i32.const 1 i32.add @@ -5454,8 +5551,8 @@ end end else - local.get $5 local.get $2 + local.get $4 local.get $1 call $~lib/util/sort/weakHeapSort end @@ -5481,7 +5578,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 @@ -5718,145 +5825,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 @@ -5956,418 +5924,266 @@ 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 + local.get $1 + i32.const 0 + i32.const 0 + local.get $0 + local.get $0 + local.get $1 + i32.eq + select + select + i32.eqz + 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 - local.get $5 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $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 - 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 - end - end - local.get $0 - local.get $3 - 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 + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 local.get $1 - i32.load + i32.const 20 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.load offset=16 i32.const 1 - local.get $2 - i32.const 4 - i32.ge_u - select + i32.shr_u + local.tee $5 + i32.or i32.eqz if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq + 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 $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.const 1 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $3 + i32.const 4 + i32.ge_u + select + i32.eqz + if + loop $do-continue|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + 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 + end + loop $while-continue|1 + local.get $3 + local.tee $2 + i32.const 1 + 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) - local.get $1 - i32.const 0 - i32.const 0 - local.get $0 + (local $4 i32) local.get $0 local.get $1 i32.eq - select + if + i32.const 1 + return + end + local.get $1 + i32.const 0 + local.get $0 select i32.eqz if i32.const 0 return end - local.get $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 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or i32.const 1 - 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 + local.get $2 + local.tee $0 + i32.const 4 + i32.ge_u + select + i32.eqz + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end 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 + loop $while-continue|1 local.get $0 - local.get $5 - i32.lt_s + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 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 local.get $3 - i32.store + i32.load16_u + local.tee $2 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 + i32.load16_u + local.tee $4 + i32.ne 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> + local.get $2 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl end - local.get $0 - i32.const 1 + 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.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - if i32.const 0 - return end - 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) @@ -6378,12 +6194,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 @@ -6391,9 +6217,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 @@ -6401,9 +6226,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 @@ -6411,20 +6236,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 @@ -6435,71 +6260,110 @@ i32.add global.set $~lib/memory/__stack_pointer end - local.get $0 + local.get $2 ) - (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 + (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 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 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 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) @@ -6538,14015 +6402,17772 @@ 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.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 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 + 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 - i32.const 1 - call $~lib/array/ensureCapacity - 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.const 1 i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + 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 - i32.const 1 - i32.shl + local.get $5 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 + else local.get $1 - i32.const 0 - i32.gt_s - if + 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 - end - local.get $2 - i32.const 256 - i32.lt_s - if - local.get $2 - local.set $3 + i32.const 45 + i32.store16 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 + f64.neg 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.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 - i32.const 1 - i32.add + i64.const 1 + i64.shl + i64.const 1 + i64.add local.tee $2 - i32.const 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/array/ensureCapacity - local.get $0 - i32.load offset=4 + 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - 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) - (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 + 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - 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 - 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 13588 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 i32.lt_s if - i32.const 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 - 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 - ) - (func $std/array/createReverseOrderedElementsArray (result i32) - (local $0 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 - 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 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 - 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 - i32.lt_s + i32.load + local.tee $1 + i32.store offset=4 + local.get $1 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.const 24 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 511 + local.get $0 local.get $2 - i32.sub - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 + i32.shl 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 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + 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 - 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) + (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 $6 f64) + 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 12 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 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer + local.get $2 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 + block $__inlined_func$~lib/util/string/joinReferenceArray local.get $0 - local.get $3 - i32.gt_s + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_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 + i32.const 12 + i32.add global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 0 + local.tee $0 + local.get $1 + i32.load + local.tee $1 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 + local.get $0 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 12592 + i32.const 8752 + local.get $1 + select + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray + 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 - 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 $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 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) - 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 + i32.const 65535 + i32.and + 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 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11136 - i32.const 8752 local.get $0 - select + local.get $1 + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 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 + 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/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 - 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 - 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 - 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.get $1 - local.get $3 - call $~lib/string/String.__concat - local.tee $1 - i32.store offset=4 + 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 - 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 + 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 - 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 $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.set $2 local.get $0 - call $~lib/array/Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + else 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 + 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 - 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 - 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.set $2 + local.get $0 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.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 - 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 + local.get $3 + i32.eqz + if + local.get $4 + i32.load8_u + 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 - 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 $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 + 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 + 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 - 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.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 - end - local.get $4 - i32.const 1 + 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 + i32.const 1 + call $~lib/array/ensureCapacity 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 $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 local.get $4 - i32.const 2 - i32.shl i32.add - i32.load - local.tee $3 - i32.store + 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.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store + i32.load8_u offset=1 + local.set $1 + local.get $0 + local.get $0 + i32.load8_u + i32.store8 offset=1 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 + i32.store8 ) - (func $start:std/array - (local $0 i32) - (local $1 i32) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result 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 + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $3 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 + i32.add + local.tee $2 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity 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 - 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 - end - local.get $1 - i32.const 0 - call $~lib/array/Array#set:buffer + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add local.get $1 - i32.const 0 - i32.store offset=4 + i32.store + local.get $0 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 + call $~lib/rt/itcms/__link local.get $0 - i32.const 0 - i32.const 1 - call $~lib/memory/memory.fill - local.get $1 + 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 - call $~lib/array/Array#set:buffer + 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 - i32.store offset=4 local.get $1 - i32.const 1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 + 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 - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store + 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 + ) + (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 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~setArgumentsLength (param $0 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 $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 - call $~lib/builtins/abort - unreachable + 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 - 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 + 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 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $std/array/isArraysEqual - i32.eqz + 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 + i32.const 9040 + i32.store 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 + i32.const 9040 + call $~lib/array/Array#join 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 - 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 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 - 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.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 82 - 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 2 - i32.const 7 - i32.const 2032 - 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 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 9040 + i32.store 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 + 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 88 - i32.const 3 - 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 2 - i32.const 7 - i32.const 2128 - 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 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + 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.load offset=12 + i32.const 15044 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 97 - 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 - call $std/array/internalCapacity - i32.const 8 - i32.ne - 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 $0 + local.get $1 + i32.const 9040 i32.store local.get $0 - i32.const 42 - call $~lib/array/Array#push - drop + 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 - i32.const 0 - 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 + 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.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 + 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 - call $std/array/internalCapacity - i32.const 8 - i32.ne + i32.const 15044 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 104 - 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 - 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 $0 + local.get $1 + i32.const 9040 i32.store local.get $0 - i32.load offset=12 - if - i32.const 0 - i32.const 1552 - i32.const 109 - 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 - i32.const 8 - 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 $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 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 8 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 115 - 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.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - 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 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.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 120 - 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 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + 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 - call $std/array/internalCapacity - i32.const 8 - 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 $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 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 + call $~lib/array/Array#constructor + global.set $std/array/arr 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 + 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 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 8 - 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 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 + i32.store + 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.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 + call $~lib/rt/itcms/__link + local.get $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 + i32.store offset=4 + local.get $1 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.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1 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/__new + local.tee $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 148 - 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 + 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 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 + 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 150 + 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 - 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 8 - i32.ne - if + call $~lib/array/Array#fill + drop + i32.const 5 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 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 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 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 8 - i32.ne - if + i32.const 2147483647 + 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 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 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 -3 + call $~lib/array/Array#fill + drop + i32.const 5 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 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 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 8 - 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 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 1 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 - 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 + local.get $2 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.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 + i32.const 8 + i32.ne + 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 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 + 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 8 + 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 8 + 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 8 + 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 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 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 8 + 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 213 + 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 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.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 8 + 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 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 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 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 - 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 + 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 219 - 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.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 $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 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 $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 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 2 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 8 - i32.ne - if + call $~lib/array/ensureCapacity + local.get $0 i32.const 0 - i32.const 1552 - i32.const 234 + 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 0 - call $~lib/array/Array#__get - i32.const 42 - 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 235 + 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 1 - call $~lib/array/Array#__get - i32.const 43 - 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 236 + 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 8 + 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 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 237 + 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 3 - call $~lib/array/Array#__get - i32.const 45 - 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 238 + 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 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 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 8 + 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 242 - 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 8 - i32.ne - if + 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 8 + 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 243 + 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.const 0 - call $~lib/array/Array#__get - i32.const 41 - 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 244 + 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 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 $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 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 3 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 247 + 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 4 - call $~lib/array/Array#__get - i32.const 45 - 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 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 335 - 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 + 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.load offset=12 - i32.const 4 - 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 258 + 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 $std/array/internalCapacity - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 259 + 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.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 260 + 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 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 261 + 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 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 262 + 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 3 - call $~lib/array/Array#__get - i32.const 45 - 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 263 + 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 - 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 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 - 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 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 268 + 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 - global.get $std/array/arr - local.tee $0 - i32.store - local.get $0 - call $std/array/internalCapacity - i32.const 8 - i32.ne - 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 269 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 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 - 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 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 271 + 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 - 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 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 - 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 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 282 + 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 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 0 - i32.const 1552 - i32.const 285 + 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 - 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 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 288 + 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 - 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 3008 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 291 + 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 - 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 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 294 + 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 - 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 3104 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 + local.get $1 i32.const 0 - i32.const 1552 - i32.const 297 + 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 - 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 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 - i32.const 1552 - i32.const 300 + 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.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 0 - i32.const 1552 - i32.const 302 + 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 - 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 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 303 - 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 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 + 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 + i32.const 3296 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=16 local.get $1 - i32.const 1 - i32.sub + 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.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 8 - 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 312 + 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 0 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 313 + 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 1 - call $~lib/array/Array#__get - i32.const 43 - 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 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 + 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 + 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 $1 + i32.store + local.get $1 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + 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 $1 + i32.store + local.get $1 i32.const 0 - i32.const 1552 - i32.const 315 + 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 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 236 + 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 237 + 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 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 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 - 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 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 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 - 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 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 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 $~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 - local.tee $2 - i32.const 0 - i32.le_s - i32.const 1 - local.get $2 - select + i32.const 5 + i32.ne if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#indexOf + i32.const 0 + i32.const 1552 + i32.const 242 + 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 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 243 + 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 + 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 354 + 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 - 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 + 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 $2 - i32.const 0 - i32.le_s + local.tee $1 i32.const 1 - local.get $2 - select + i32.lt_s if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#indexOf + i32.const 2176 + i32.const 1104 + i32.const 335 + i32.const 21 + call $~lib/builtins/abort + unreachable end - local.get $0 + local.get $5 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 - end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const -1 - i32.ne - if + 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 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.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 8 + 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 362 + 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 - 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 + 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 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/array/Array#lastIndexOf - i32.const 3 - i32.ne - 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 8 + 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 364 + 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 - local.get $0 - i32.const 2 - i32.const 2 - call $~lib/array/Array#lastIndexOf - if - i32.const 0 - i32.const 1552 - i32.const 365 + 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 - local.get $0 - i32.const 2 - i32.const -2 - call $~lib/array/Array#lastIndexOf - if - i32.const 0 - i32.const 1552 - i32.const 366 + i32.const 2 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.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 367 + 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 44 - i32.const 0 - 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 375 + 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 42 - 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 378 - 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 + 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 381 - 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 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 384 - 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 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 $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 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 - 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 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 - i32.const 0 - i32.const 1552 - i32.const 399 + 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 - 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 3648 + 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 402 + 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 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 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|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 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 - 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 3712 + 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 - 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 8 - 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 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 8 + 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 + 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 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#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 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 - 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 - 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 - 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 0 - i32.const 1552 - i32.const 436 + 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 - 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.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 - i32.const 1552 - i32.const 439 + 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 - 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.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 - 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 - 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 0 - i32.const 1552 - i32.const 443 - 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 0 - i32.const 1552 - i32.const 444 + 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 - 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 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 - i32.const 1552 - i32.const 447 + 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 - 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 0 - i32.const 1552 - i32.const 448 + 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 - 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 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 - 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 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 - 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 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 - 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 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 - 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 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 - 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 0 - i32.const 1552 - i32.const 460 + 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 - 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 0 - i32.const 1552 - i32.const 463 + 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 - 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.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 - 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 - 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 + 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.const 1552 - i32.const 467 - 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.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 - 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 - 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 + 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.const 1552 - i32.const 471 - 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.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 - 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 + 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.const 1552 - i32.const 476 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - if + 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.const 1552 - i32.const 477 - 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 0 - i32.const 1552 - i32.const 482 - 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 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.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.const 1552 - i32.const 484 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 3 - i32.ne - if + 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 486 - 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.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.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.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 - 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 + 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.const 1552 - i32.const 489 - 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.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.const 1552 - i32.const 494 + 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 - 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 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 8 + 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 495 + 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 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - 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 497 + 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 - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - 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 498 + 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 - 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 + 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 499 + 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 - 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 4048 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 512 + 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 - 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 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 515 + 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 - 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 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 518 + 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 - 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 0 - i32.const 1552 - i32.const 526 + 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 - 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 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 527 + 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 - 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 + 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 529 + 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 - 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 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 542 + 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 - 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 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 543 + 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 - 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 4400 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 1552 - i32.const 553 + 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 - 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.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 556 + 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 - 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 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 564 + 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 - 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 0 - i32.const 1552 - i32.const 565 + 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 - 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 + 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 567 + 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 - 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.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 580 + 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 - 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 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 581 + 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 - 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.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 591 + 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 - 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 + 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 594 + 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 - 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.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 602 + 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 - 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 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 603 + 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 $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 + 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 605 + 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 - 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 + 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 618 + i32.const 2 + i32.const 3 + 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 + 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 + 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 + 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 + 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 2 + i32.const 3 + 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 + 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 + 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 + 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 + i32.const 5280 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 4 + 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 + 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 + 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 + 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 + 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 + i32.const 5408 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 7 + 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 + 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 + 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 + 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 + 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 + 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 2 + i32.const 3 + 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 + 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 + 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 + 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 $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 + call $~lib/array/Array#__get + i32.load + i32.const 3 + 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 + 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 + 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 + 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 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 + i32.const 0 + 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.store + i32.const 0 + local.get $1 + i32.load offset=12 + local.tee $9 + local.get $9 + i32.const 0 + 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 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 2 + i32.const 11 + i32.const 0 + 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 + 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 + 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 0 + 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 + i32.const 3 + 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 + 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 + 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 + 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 + 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 + 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 + 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/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 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 + 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 $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 619 + 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 i32.const 0 - i32.const 1552 - i32.const 619 - 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 + 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 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 + 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 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 + 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 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 $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 + 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 + 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 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 + 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 657 + 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 - 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 6528 + 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 $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 683 + 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 - 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 $7 + i32.store local.get $1 - i32.const 100 + i32.const 6560 + i32.store offset=8 + i32.const 0 + 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 - if - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $7 + i32.load offset=12 + local.tee $5 + i32.const 2 + i32.const 9 + i32.const 0 + 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 - 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 + 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 - 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 + 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 + 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 + 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 + 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 - local.get $3 + 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 - 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 731 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 - 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 - 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 - i32.const 0 - i32.const 1552 - i32.const 708 + 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 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 + 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 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 $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 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 + 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 731 + 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.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 + 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 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 $6 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 + 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 751 - 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 + 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 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 $6 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 $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|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 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 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 + 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 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 + local.set $6 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 + 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 - 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 + local.set $6 i32.const 0 - i32.const 1552 - i32.const 802 + 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 + local.set $6 + i32.const 0 + 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.load offset=12 - i32.const 8 - 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 $2 + i32.store + local.get $1 + i32.const 7040 + i32.store offset=8 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 + 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 + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std/array/arr + local.tee $2 + i32.store + local.get $1 + i32.const 7104 + i32.store offset=8 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 + local.set $6 + local.get $2 + i32.load offset=12 + 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 - 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 $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 2 - i32.ne - if + local.set $6 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|096 + 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 7136 + 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|096 + end + end + 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 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 + 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 + 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 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 - 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 $6 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0100 + 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 7200 + 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|0100 + 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 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 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 $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 836 + 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 - 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 + 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 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 + global.set $~argumentsLength 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 $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 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 + 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 - i32.const 1552 - i32.const 850 + 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 + 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 $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 + end + 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 - 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 + i32.const 10 + i32.const 7664 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=24 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 + global.set $~argumentsLength i32.const 0 - i32.const 1552 - i32.const 864 + 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.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 + 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 + local.set $2 + loop $for-loop|0106 + local.get $5 + local.get $7 + i32.gt_s + if + local.get $3 + 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 + i32.const 1 + i32.add + 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 + 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 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 + 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 + 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 $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 7568 - local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 7568 - 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 5 + i32.const 2 + i32.const 3 + i32.const 7888 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 i32.const 0 - local.set $2 + 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 + 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 $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 - i32.load offset=12 - local.tee $4 local.get $1 - i32.load offset=12 - i32.ne - br_if $__inlined_func$std/array/isArraysEqual + call $~lib/array/Array#sort drop - i32.const 1 + 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.eq - br_if $__inlined_func$std/array/isArraysEqual - drop - loop $for-loop|02 - local.get $2 - local.get $4 - i32.lt_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 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|02 - end - end - i32.const 1 - end - 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 $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 - end + 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 - i32.const 7760 - local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 7760 - 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 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.load offset=12 - local.tee $4 - local.get $1 - i32.load offset=12 - i32.ne - br_if $__inlined_func$std/array/isArraysEqual + i32.const 0 + call $~lib/array/Array#sort@varargs drop - i32.const 1 + 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 - i32.eq - br_if $__inlined_func$std/array/isArraysEqual - drop - loop $for-loop|03 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.tee $6 - 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 $2 - 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 - end + 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 - 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 2 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 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 + 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 + 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 + 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 965 + 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 - 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 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 + 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 - 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 + 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 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.store + local.get $5 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 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 + call $~lib/rt/itcms/__link + local.get $5 i32.const 0 - i32.const 1552 - i32.const 997 - 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 + i32.store offset=4 + local.get $5 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 + i32.store offset=8 + local.get $5 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 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 32 - 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 32 - 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 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 32 + 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 32 + i32.store offset=8 + local.get $5 i32.const 2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/array/Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1 - local.get $1 - i32.sub - call $~lib/array/Array#__set + 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 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|062 + 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 - 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) + 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 - local.set $2 + local.set $5 global.get $~lib/memory/__stack_pointer + local.tee $2 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 + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $0 i64.const 0 i64.store - block $folding-inner1 - block $folding-inner0 + 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.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 + 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.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.store local.get $0 - i32.load offset=12 - local.tee $7 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 + 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 - i32.eq - br_if $folding-inner1 - loop $for-loop|04 - local.get $2 + 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 + 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 - i32.lt_s + 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 - 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 $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.const 8 i32.add - local.set $2 - br $for-loop|04 + 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 - br $folding-inner1 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 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> + i32.const 1552 + i32.const 942 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 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 - local.set $1 + 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 - 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 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 + 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 - 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 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 + 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 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 + 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 + 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 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 + i32.const 400 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $10 + i32.store + loop $for-loop|062 + local.get $0 + 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 + 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 + end + 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 1054 - 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 + 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.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 + i32.store + block $1of163 + block $0of164 + block $outOfRange65 + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of164 $1of163 $outOfRange65 + end + unreachable + end + 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 2 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 + 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.const 1552 - i32.const 1069 - 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 + local.set $0 i32.const 0 - i32.const 1552 - i32.const 1070 + 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/joinBooleanArray + local.get $1 + 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 + i32.const 8752 + local.set $1 + br $__inlined_func$~lib/util/string/joinBooleanArray + end + 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 + 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 - 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 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 - 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 0 - i32.const 1552 - i32.const 1072 + 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 + 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 - 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 0 - i32.const 1552 - i32.const 1074 + 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 - 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 - i32.const 0 - i32.const 1552 - i32.const 1075 + 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 - 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.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 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 $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 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 + call $~lib/array/Array#__uset + local.get $0 + i32.const 2 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 + 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.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 + 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 $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 1552 - i32.const 1088 + 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 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.const 0 - i32.const 1552 - i32.const 1091 + 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 - 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 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 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|1 + 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 - i32.const 10 - i32.lt_s + 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 - local.get $0 - local.get $1 - call $~lib/array/Array#__get - local.get $1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1100 - 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 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 - 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 + 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 + 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 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 - if - 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 + 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 - 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 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 1108 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 - local.get $1 - i32.const 1 + 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 - local.set $1 - br $for-loop|2 + global.set $~lib/memory/__stack_pointer 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 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 13104 + i32.store offset=8 + local.get $1 + 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 + 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 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.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 + 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 - call $~lib/rt/itcms/step - drop - br $while-continue|070 + 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 - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state + 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 13168 + call $~lib/string/String.__eq + i32.eqz if - call $~lib/rt/itcms/step - drop - br $while-continue|1 + i32.const 0 + i32.const 1552 + i32.const 1075 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 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.add + i32.sub 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 + 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 - 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/joinIntegerArray local.get $1 - call $~lib/string/String.__eq + 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 - local.get $2 - return + 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 - 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 8 - local.get $0 - i32.const 8 - i32.gt_u - select - 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 + 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 - 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 229 - 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 13264 + i32.store offset=8 local.get $1 - local.get $3 + 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 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 + 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.const 27 + i32.const 13520 + call $~lib/rt/__newArray local.tee $1 - i32.const 0 + i32.store offset=44 local.get $1 - i32.const 0 - i32.gt_s - select - else + 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 - local.get $3 + 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 - 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.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 - local.get $2 + 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.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 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) + 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 $3 - i32.add + 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.set $0 i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 + local.set $7 local.get $1 - local.get $3 + i32.const 12 + 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 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 + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 - i32.const 2 - i32.shl + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + local.get $0 + 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|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 $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + local.get $2 + 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 + 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.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.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.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 $3 - i32.add + 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.set $0 i32.const 0 - i32.gt_s - select - else + local.set $7 local.get $1 - local.get $3 - local.get $1 - local.get $3 + i32.const 12 + 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 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store 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#__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 99 - 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 103 - 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 - local.get $2 - i32.const 2 - i32.shl + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + local.get $0 + 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.tee $2 + i32.store + local.get $2 + 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 + 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.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 1088 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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.sub + i32.load offset=4 + i32.store offset=32 + local.get $1 + i32.const 1 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 99 - 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 + 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 - local.get $5 + 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.const 9040 + i32.store + local.get $2 + i32.load offset=4 + local.set $3 + local.get $2 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<~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<~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 + 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|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 - 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<~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 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.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 - local.tee $3 - local.get $3 - local.get $5 - i32.gt_s - select + 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 $0 + loop $for-loop|1129 + local.get $0 + 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.tee $1 + i32.const 4 + i32.const 2 + i32.const 39 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + 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.const 2 + i32.const 27 + i32.const 14128 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $4 + i32.const 1 + 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 - 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.get $3 - local.get $2 + 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 $1 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + local.get $5 + i32.lt_s if 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 - 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 + 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 - unreachable end - i32.const 8064 - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8064 + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $9 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 + 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.gt_s - if - local.get $2 - 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 - 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 + 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 + local.get $3 + local.get $9 + i32.add + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + local.tee $1 + call $~lib/memory/memory.copy + local.get $1 + local.get $3 + i32.add + local.set $3 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1131 + end 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 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $2 - local.get $1 - call $~lib/math/NativeMath.random + i32.const 0 + local.set $0 + loop $for-loop|2 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 - local.set $1 - br $for-loop|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 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 + local.get $10 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 2 - i32.eq + 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 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=4 - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $4 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) 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 + local.get $4 + i32.load offset=12 i32.lt_s if - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 + 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 - 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.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 - 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 + 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 + 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 16 - i32.const 29 - call $~lib/rt/itcms/__new - local.tee $0 + local.get $1 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 + 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 + 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/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.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 72 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end - global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 31456 + i32.const 31504 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 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/string/joinBooleanArray (param $0 i32) (param $1 i32) (result i32) - (local $2 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) - (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 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 $2 + local.get $0 + i32.load offset=12 local.tee $3 - i32.const 0 - i32.lt_s + 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 8752 + i32.const -1 return end - block $folding-inner0 + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 local.get $3 - i32.eqz + 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 - i32.const 8976 - i32.const 9008 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load8_u - select - 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 5 - i32.add - i32.mul - i32.const 5 - 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|1 - local.get $3 - local.get $5 - i32.gt_s + 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 - local.get $0 - local.get $5 - i32.add - i32.load8_u - local.tee $8 - i32.eqz + global.get $~lib/memory/__stack_pointer 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.shl - call $~lib/memory/memory.copy + global.set $~lib/memory/__stack_pointer local.get $2 - local.get $6 - 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|1 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end - local.get $0 - local.get $3 - i32.add - i32.load8_u - local.tee $3 - i32.eqz - i32.const 4 - i32.add - local.set $0 - local.get $1 - local.get $2 + 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 + 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.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 - 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 + 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.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.const 8 + local.get $0 + i32.const 8 + i32.gt_u + select + 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 + 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 + 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 $0 + local.get $1 ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (func $std/array/Ref#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 0 - i32.store - local.get $0 - i32.eqz + 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 9344 - return + i32.const 31456 + i32.const 31504 + 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 + global.get $~lib/memory/__stack_pointer local.tee $1 - select - local.tee $2 - call $~lib/util/number/decimalCount32 + i32.const 0 + i32.store 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 + i32.const 4 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 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 + 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/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result 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) - (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 $5 i32.const 0 i32.store + local.get $0 local.get $1 - i32.const 1 - i32.sub + i32.shl local.tee $4 + local.set $6 + local.get $4 i32.const 0 - i32.lt_s + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 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/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.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 + 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.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 + 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 - local.get $0 ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 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) global.get $~lib/memory/__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 + 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 - 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 229 + 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 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new + 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 - call $~lib/util/number/utoa_dec_simple + 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/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#slice (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 $0 + i32.load offset=12 + local.set $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 - 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 + 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 $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 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else 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 $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 - 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 + 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 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/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) + (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) - (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 $3 i32.const 0 i32.store - local.get $1 - i32.const 1 - i32.sub + 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 - 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 + if (result i32) + local.get $1 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 - 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 + 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.const 2 i32.shl i32.add - local.get $0 local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 - return + 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 i32) (local $4 i32) @@ -20556,462 +24177,162 @@ i32.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 - 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 + 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.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 - local.get $1 - 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.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 + 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/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 + local.tee $2 i32.const 0 i32.store - local.get $1 - i32.const 1 - i32.sub + local.get $2 + i32.const 2 + local.get $0 + i32.load offset=12 local.tee $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 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 + if (result i32) + local.get $1 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 $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 $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.const 2 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 - 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 + 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/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 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 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 - 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 - i32.add - local.tee $7 - i32.const 1 - i32.shl + 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 - 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 - 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 - 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 + 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 99 + 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 103 + i32.const 40 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -21019,94 +24340,56 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/util/number/itoa64 (param $0 i64) (result i32) - (local $1 i32) + (func $~lib/array/Array#__get (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 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9344 - return - end - i64.const 0 - local.get $0 - i64.sub - local.get $0 - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $3 - select - local.tee $0 - i64.const 4294967295 - i64.le_u + 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 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 + 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 $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple + call $~lib/builtins/abort + unreachable end - local.get $3 + 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 - local.get $2 - i32.const 45 - i32.store16 + i32.const 1344 + i32.const 1104 + i32.const 99 + 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 $2 + local.get $0 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21116,265 +24399,325 @@ i32.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 + 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 - i32.eqz + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $2 + local.get $5 + i32.lt_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 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.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 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 + 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 - local.get $6 - local.get $1 - local.get $2 + 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 + 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.add - local.get $0 + 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 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.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 + 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 $1 local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + 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 + 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 - 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 + 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 $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 + 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 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 + local.set $5 + br $for-loop|0 + end 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 @@ -21382,48 +24725,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 @@ -21432,71 +24773,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 @@ -21504,235 +25007,206 @@ 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 + 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.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.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 64 + i32.const 60 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select i32.const 2 i32.shl - local.tee $2 + local.tee $3 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 + local.tee $2 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 + i32.const 0 local.get $3 + call $~lib/memory/memory.fill local.get $0 + local.get $2 i32.store - local.get $3 local.get $0 + local.get $2 i32.const 0 call $~lib/rt/itcms/__link - 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.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 - end + 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.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.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 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 + if + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 + 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 - 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 @@ -21740,599 +25214,782 @@ 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 - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 + 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 $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 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $1 - i32.ne - if - local.get $6 + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) + (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 + 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 - local.get $5 + 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 + 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.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 + 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 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $3 - local.get $1 - i32.sub - call $~lib/memory/memory.copy + 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 + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 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) - (local $7 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.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 + i32.const 15044 + i32.lt_s if - i32.const 1056 - i32.const 1104 - i32.const 229 - i32.const 60 + 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 $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 + i64.const 0 + i64.store + local.get $0 + i32.load offset=12 local.set $5 - local.get $2 - i32.const 2 - i32.shl - local.set $2 local.get $0 i32.load offset=4 - local.set $0 + local.set $6 loop $for-loop|0 local.get $2 - local.get $4 - i32.gt_u - if - local.get $4 - local.get $5 - i32.add - local.get $0 - local.get $4 - i32.add - i32.load - local.tee $7 - i32.store - local.get $3 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 4 - 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 + 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 $2 - i32.store + 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 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 4 i32.add - local.set $0 - br $for-loop|1 + 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 $3 - ) - (func $~lib/array/Array<~lib/string/String>#slice (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 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) - 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 - local.tee $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) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $export:~lib/array/Array#get:dataStart (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 - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $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 + global.get $~lib/memory/__stack_pointer 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 + local.get $0 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.const 4 i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 + global.set $~lib/memory/__stack_pointer + ) + (func $export:std/array/ArrayU32#constructor@varargs (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 + 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 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 + 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 2 - i32.shl - i32.add - local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.sub + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select i32.const 2 i32.shl - call $~lib/memory/memory.copy + 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 $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:~lib/array/Array#get:dataStart (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 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (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 @@ -22342,13 +25999,28 @@ 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 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -22362,14 +26034,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 @@ -22427,23 +26112,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 @@ -22456,34 +26150,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) @@ -22491,25 +26185,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 @@ -22518,7 +26220,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 @@ -22531,11 +26233,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 @@ -22556,22 +26271,101 @@ i32.const 2147483647 local.set $3 end - local.get $0 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 - call $~lib/array/Array#fill + 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 @@ -22588,23 +26382,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 @@ -22621,25 +26479,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 @@ -22654,171 +26578,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 + i32.const 15044 + i32.lt_s if - i32.const 1056 - i32.const 1104 - i32.const 229 - i32.const 60 + 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 $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 + 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 229 + 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 @@ -22852,7 +26810,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 @@ -22895,13 +26863,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 @@ -22952,82 +26933,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 + 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 - 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 + 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#shift (param $0 i32) (result i32) (local $1 i32) @@ -23038,7 +27036,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 @@ -23092,14 +27100,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 @@ -23153,7 +27174,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 @@ -23166,68 +27197,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) @@ -23237,7 +27481,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 @@ -23291,15 +27545,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 @@ -23311,109 +27577,290 @@ 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 477 + 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) + (local $4 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 - 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-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 $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-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 64 + 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 8 + local.get $1 + i32.const 8 + i32.gt_u + select + 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 $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 - 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 477 - 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 @@ -23438,14 +27885,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 @@ -23501,23 +27961,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 @@ -23528,34 +27997,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) @@ -23563,25 +28032,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 @@ -23590,9 +28067,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 @@ -23605,7 +28082,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 @@ -23637,11 +28124,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 @@ -23658,23 +28156,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 @@ -23691,25 +28253,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 @@ -23724,72 +28352,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 @@ -23810,80 +28446,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 229 - 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 229 + 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 @@ -23900,15 +28565,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) @@ -23917,7 +28671,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 @@ -23958,13 +28722,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 @@ -24013,80 +28790,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 - 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 + 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#shift (param $0 i32) (result i32) (local $1 i32) @@ -24096,7 +28890,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 @@ -24147,14 +28951,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 @@ -24208,7 +29025,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 @@ -24249,143 +29076,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) @@ -24395,7 +29343,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 @@ -24447,106 +29405,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 @@ -24562,54 +29682,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) @@ -24619,81 +29754,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) @@ -24703,85 +29854,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) @@ -24789,82 +29952,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 132 - 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 136 - 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 132 + 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 136 + 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 @@ -24885,76 +30074,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 @@ -24962,18 +30150,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 @@ -24984,695 +30232,1158 @@ 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 229 + 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 - end - local.get $0 - local.get $2 - i32.add + i32.const 2176 + i32.const 1104 + i32.const 276 + i32.const 21 + 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 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 276 - 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 335 + 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 335 - 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 + i32.const 1 + call $~lib/array/ensureCapacity + 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 - i32.const 1 - call $~lib/array/ensureCapacity - 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) @@ -25682,174 +31393,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 e059549446..0826be898f 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1,11 +1,10 @@ (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_i32_=>_none (func (param i32 i32 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 $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (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))) @@ -45,15 +44,6 @@ (data (i32.const 1740) "\02\t\00\00\00\00\00\00A\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") (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,20 +1052,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1090,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 @@ -1104,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 @@ -1128,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 @@ -1246,271 +1239,72 @@ 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.gt_u - if - i32.const 1168 - i32.const 1504 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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.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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 i32.sub i32.const -4 @@ -1623,6 +1417,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 @@ -1640,12 +1438,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 @@ -1661,13 +1459,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 @@ -1681,43 +1480,1013 @@ 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.gt_u + if + i32.const 1168 + i32.const 1504 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end local.tee $2 - local.get $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.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/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 $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 @@ -1727,6 +2496,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 @@ -1888,594 +2675,627 @@ end end 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 - 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 + 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 + 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=4 + 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 - i32.and + call $~lib/arraybuffer/ArrayBuffer#slice local.tee $0 - local.set $2 + i32.store offset=4 local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.ne 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 $2 + i32.const 1568 + i32.const 21 i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - 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 - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end + 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.load + 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 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 1568 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable end - return - end - local.get $0 - i32.load - local.tee $0 - if + 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 - 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 $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 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) @@ -2483,7 +3303,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 @@ -2567,7 +3397,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 @@ -2583,7 +3423,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 @@ -2617,7 +3460,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 d8da665160..ba303662a9 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1,17 +1,15 @@ (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_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) @@ -52,15 +50,6 @@ (data (i32.const 1772) "A\00\00\00\02") (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,20 +1058,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1097,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 @@ -1111,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 @@ -1135,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 @@ -1253,274 +1245,75 @@ 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.gt_u - if - i32.const 1168 - i32.const 1504 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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 @@ -1630,6 +1423,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 @@ -1647,12 +1444,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 @@ -1668,13 +1465,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 @@ -1688,56 +1486,269 @@ 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.gt_u if - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 + i32.const 1168 + i32.const 1504 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.tee $2 + local.get $6 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $3 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $5 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $6 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + i32.load + local.set $5 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $6 + local.get $3 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $3 + local.get $6 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $6 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $6 + i32.const 4 + i32.add + local.tee $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $6 + 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 @@ -1758,8 +1769,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 @@ -1771,7 +1780,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1803,19 +1812,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 @@ -1848,37 +1844,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 @@ -1900,7 +1881,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 ) @@ -1923,17 +1927,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 @@ -1964,7 +1957,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) @@ -1997,7 +1997,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) @@ -2023,7 +2032,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) @@ -2075,7 +2106,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) @@ -2108,7 +2146,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) @@ -2134,7 +2181,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) @@ -2161,11 +2230,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 @@ -2189,7 +2269,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 ) @@ -2213,7 +2316,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 ) @@ -2237,7 +2347,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 ) @@ -2261,7 +2380,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 ) @@ -2285,7 +2426,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 ) @@ -2309,7 +2457,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 ) @@ -2333,7 +2490,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 ) @@ -2375,19 +2554,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) @@ -2397,1731 +2563,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 - 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 + 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 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 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + 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=4 + local.get $1 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 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 - call $~lib/dataview/DataView#getFloat32 - f32.const -62437351080004157440 - 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 22 + 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 2 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const 1403059112509440 - 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 23 + 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 3 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -5.522466503261712e-20 - 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 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 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 -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 27 - 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 + 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 28 + 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#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 + 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 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) @@ -4129,11 +4333,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 44e99805c5..c89a8613c8 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -1,17 +1,17 @@ (module - (type $i32_=>_i32 (func (param i32) (result 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_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/date/_day (mut i32) (i32.const 0)) (global $~lib/date/_month (mut i32) (i32.const 0)) @@ -25,7 +25,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 22492)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23948)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) ",") @@ -55,182 +55,198 @@ (data (i32.const 1800) "\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 1852) "\1c") (data (i32.const 1864) "\01\00\00\00\02\00\00\000") - (data (i32.const 1884) "\\") - (data (i32.const 1896) "\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 1980) "\1c") - (data (i32.const 1992) "\01") - (data (i32.const 2012) "\1c") - (data (i32.const 2024) "\01\00\00\00\02\00\00\00T") - (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\00Z") - (data (i32.const 2140) "L") - (data (i32.const 2152) "\01\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data (i32.const 2220) "L") - (data (i32.const 2232) "\01\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data (i32.const 2300) "L") - (data (i32.const 2312) "\01\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z") - (data (i32.const 2380) "L") - (data (i32.const 2392) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") - (data (i32.const 2460) "L") - (data (i32.const 2472) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") - (data (i32.const 2540) "L") - (data (i32.const 2552) "\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") - (data (i32.const 2620) "L") - (data (i32.const 2632) "\01\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data (i32.const 2700) "L") - (data (i32.const 2712) "\01\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data (i32.const 2780) "L") - (data (i32.const 2792) "\01\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z") - (data (i32.const 2860) "\1c") - (data (i32.const 2872) "\01\00\00\00\08\00\00\00S\00u\00n\00 ") - (data (i32.const 2892) "\1c") - (data (i32.const 2904) "\01\00\00\00\08\00\00\00M\00o\00n\00 ") - (data (i32.const 2924) "\1c") - (data (i32.const 2936) "\01\00\00\00\08\00\00\00T\00u\00e\00 ") - (data (i32.const 2956) "\1c") - (data (i32.const 2968) "\01\00\00\00\08\00\00\00W\00e\00d\00 ") - (data (i32.const 2988) "\1c") - (data (i32.const 3000) "\01\00\00\00\08\00\00\00T\00h\00u\00 ") - (data (i32.const 3020) "\1c") - (data (i32.const 3032) "\01\00\00\00\08\00\00\00F\00r\00i\00 ") - (data (i32.const 3052) "\1c") - (data (i32.const 3064) "\01\00\00\00\08\00\00\00S\00a\00t\00 ") - (data (i32.const 3084) ",") - (data (i32.const 3096) "\04\00\00\00\1c\00\00\00@\0b\00\00`\0b\00\00\80\0b\00\00\a0\0b\00\00\c0\0b\00\00\e0\0b\00\00\00\0c") - (data (i32.const 3132) "\1c") - (data (i32.const 3144) "\01\00\00\00\08\00\00\00J\00a\00n\00 ") - (data (i32.const 3164) "\1c") - (data (i32.const 3176) "\01\00\00\00\08\00\00\00F\00e\00b\00 ") - (data (i32.const 3196) "\1c") - (data (i32.const 3208) "\01\00\00\00\08\00\00\00M\00a\00r\00 ") - (data (i32.const 3228) "\1c") - (data (i32.const 3240) "\01\00\00\00\08\00\00\00A\00p\00r\00 ") - (data (i32.const 3260) "\1c") - (data (i32.const 3272) "\01\00\00\00\08\00\00\00M\00a\00y\00 ") - (data (i32.const 3292) "\1c") - (data (i32.const 3304) "\01\00\00\00\08\00\00\00J\00u\00n\00 ") - (data (i32.const 3324) "\1c") - (data (i32.const 3336) "\01\00\00\00\08\00\00\00J\00u\00l\00 ") - (data (i32.const 3356) "\1c") - (data (i32.const 3368) "\01\00\00\00\08\00\00\00A\00u\00g\00 ") - (data (i32.const 3388) "\1c") - (data (i32.const 3400) "\01\00\00\00\08\00\00\00S\00e\00p\00 ") - (data (i32.const 3420) "\1c") - (data (i32.const 3432) "\01\00\00\00\08\00\00\00O\00c\00t\00 ") - (data (i32.const 3452) "\1c") - (data (i32.const 3464) "\01\00\00\00\08\00\00\00N\00o\00v\00 ") - (data (i32.const 3484) "\1c") - (data (i32.const 3496) "\01\00\00\00\08\00\00\00D\00e\00c\00 ") - (data (i32.const 3516) "L") - (data (i32.const 3528) "\04\00\00\000\00\00\00P\0c\00\00p\0c\00\00\90\0c\00\00\b0\0c\00\00\d0\0c\00\00\f0\0c\00\00\10\0d\00\000\0d\00\00P\0d\00\00p\0d\00\00\90\0d\00\00\b0\0d") - (data (i32.const 3596) "\1c") - (data (i32.const 3608) "\01\00\00\00\02\00\00\00 ") - (data (i32.const 3628) "<") - (data (i32.const 3640) "\01\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000") - (data (i32.const 3692) "<") - (data (i32.const 3704) "\01\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000") - (data (i32.const 3756) "<") - (data (i32.const 3768) "\01\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001") - (data (i32.const 3820) ",") - (data (i32.const 3832) "\01\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000") - (data (i32.const 3868) ",") - (data (i32.const 3880) "\01\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009") - (data (i32.const 3916) "\1c") - (data (i32.const 3928) "\01\00\00\00\n\00\00\00S\00u\00n\00,\00 ") - (data (i32.const 3948) "\1c") - (data (i32.const 3960) "\01\00\00\00\n\00\00\00M\00o\00n\00,\00 ") - (data (i32.const 3980) "\1c") - (data (i32.const 3992) "\01\00\00\00\n\00\00\00T\00u\00e\00,\00 ") - (data (i32.const 4012) "\1c") - (data (i32.const 4024) "\01\00\00\00\n\00\00\00W\00e\00d\00,\00 ") - (data (i32.const 4044) "\1c") - (data (i32.const 4056) "\01\00\00\00\n\00\00\00T\00h\00u\00,\00 ") - (data (i32.const 4076) "\1c") - (data (i32.const 4088) "\01\00\00\00\n\00\00\00F\00r\00i\00,\00 ") - (data (i32.const 4108) "\1c") - (data (i32.const 4120) "\01\00\00\00\n\00\00\00S\00a\00t\00,\00 ") - (data (i32.const 4140) ",") - (data (i32.const 4152) "\04\00\00\00\1c\00\00\00`\0f\00\00\80\0f\00\00\a0\0f\00\00\c0\0f\00\00\e0\0f\00\00\00\10\00\00 \10") - (data (i32.const 4188) "\1c") - (data (i32.const 4200) "\01\00\00\00\n\00\00\00 \00J\00a\00n\00 ") - (data (i32.const 4220) "\1c") - (data (i32.const 4232) "\01\00\00\00\n\00\00\00 \00F\00e\00b\00 ") - (data (i32.const 4252) "\1c") - (data (i32.const 4264) "\01\00\00\00\n\00\00\00 \00M\00a\00r\00 ") - (data (i32.const 4284) "\1c") - (data (i32.const 4296) "\01\00\00\00\n\00\00\00 \00A\00p\00r\00 ") + (data (i32.const 1884) "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 2284) "\1c\04") + (data (i32.const 2296) "\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 3340) "\\") + (data (i32.const 3352) "\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 3436) "\1c") + (data (i32.const 3448) "\01") + (data (i32.const 3468) "\1c") + (data (i32.const 3480) "\01\00\00\00\02\00\00\00T") + (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\00Z") + (data (i32.const 3596) "L") + (data (i32.const 3608) "\01\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 3676) "L") + (data (i32.const 3688) "\01\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data (i32.const 3756) "L") + (data (i32.const 3768) "\01\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z") + (data (i32.const 3836) "L") + (data (i32.const 3848) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") + (data (i32.const 3916) "L") + (data (i32.const 3928) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") + (data (i32.const 3996) "L") + (data (i32.const 4008) "\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") + (data (i32.const 4076) "L") + (data (i32.const 4088) "\01\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data (i32.const 4156) "L") + (data (i32.const 4168) "\01\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 4236) "L") + (data (i32.const 4248) "\01\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z") (data (i32.const 4316) "\1c") - (data (i32.const 4328) "\01\00\00\00\n\00\00\00 \00M\00a\00y\00 ") + (data (i32.const 4328) "\01\00\00\00\08\00\00\00S\00u\00n\00 ") (data (i32.const 4348) "\1c") - (data (i32.const 4360) "\01\00\00\00\n\00\00\00 \00J\00u\00n\00 ") + (data (i32.const 4360) "\01\00\00\00\08\00\00\00M\00o\00n\00 ") (data (i32.const 4380) "\1c") - (data (i32.const 4392) "\01\00\00\00\n\00\00\00 \00J\00u\00l\00 ") + (data (i32.const 4392) "\01\00\00\00\08\00\00\00T\00u\00e\00 ") (data (i32.const 4412) "\1c") - (data (i32.const 4424) "\01\00\00\00\n\00\00\00 \00A\00u\00g\00 ") + (data (i32.const 4424) "\01\00\00\00\08\00\00\00W\00e\00d\00 ") (data (i32.const 4444) "\1c") - (data (i32.const 4456) "\01\00\00\00\n\00\00\00 \00S\00e\00p\00 ") + (data (i32.const 4456) "\01\00\00\00\08\00\00\00T\00h\00u\00 ") (data (i32.const 4476) "\1c") - (data (i32.const 4488) "\01\00\00\00\n\00\00\00 \00O\00c\00t\00 ") + (data (i32.const 4488) "\01\00\00\00\08\00\00\00F\00r\00i\00 ") (data (i32.const 4508) "\1c") - (data (i32.const 4520) "\01\00\00\00\n\00\00\00 \00N\00o\00v\00 ") - (data (i32.const 4540) "\1c") - (data (i32.const 4552) "\01\00\00\00\n\00\00\00 \00D\00e\00c\00 ") - (data (i32.const 4572) "L") - (data (i32.const 4584) "\04\00\00\000\00\00\00p\10\00\00\90\10\00\00\b0\10\00\00\d0\10\00\00\f0\10\00\00\10\11\00\000\11\00\00P\11\00\00p\11\00\00\90\11\00\00\b0\11\00\00\d0\11") + (data (i32.const 4520) "\01\00\00\00\08\00\00\00S\00a\00t\00 ") + (data (i32.const 4540) ",") + (data (i32.const 4552) "\04\00\00\00\1c\00\00\00\f0\10\00\00\10\11\00\000\11\00\00P\11\00\00p\11\00\00\90\11\00\00\b0\11") + (data (i32.const 4588) "\1c") + (data (i32.const 4600) "\01\00\00\00\08\00\00\00J\00a\00n\00 ") + (data (i32.const 4620) "\1c") + (data (i32.const 4632) "\01\00\00\00\08\00\00\00F\00e\00b\00 ") (data (i32.const 4652) "\1c") - (data (i32.const 4664) "\01\00\00\00\08\00\00\00 \00G\00M\00T") - (data (i32.const 4684) "L") - (data (i32.const 4696) "\01\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") - (data (i32.const 4764) "L") - (data (i32.const 4776) "\01\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T") - (data (i32.const 4844) "L") - (data (i32.const 4856) "\01\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") - (data (i32.const 4924) ",") - (data (i32.const 4936) "\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") - (data (i32.const 4972) ",") - (data (i32.const 4984) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 5020) ",") - (data (i32.const 5032) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 5068) "|") - (data (i32.const 5080) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 5196) ",") - (data (i32.const 5208) "\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") - (data (i32.const 5244) ",") - (data (i32.const 5256) "\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") - (data (i32.const 5292) "<") - (data (i32.const 5304) "\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") - (data (i32.const 5356) "L") - (data (i32.const 5368) "\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") - (data (i32.const 5436) "L") - (data (i32.const 5448) "\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") - (data (i32.const 5516) "\1c") - (data (i32.const 5528) "\01\00\00\00\08\00\00\000\000\000\000") - (data (i32.const 5548) "\1c") - (data (i32.const 5560) "\01\00\00\00\08\00\00\000\000\000\001") - (data (i32.const 5580) "\1c") - (data (i32.const 5592) "\01\00\00\00\08\00\00\001\009\007\006") - (data (i32.const 5612) ",") - (data (i32.const 5624) "\01\00\00\00\0e\00\00\001\009\007\006\00-\000\002") - (data (i32.const 5660) "<") - (data (i32.const 5672) "\01\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004") - (data (i32.const 5724) "L") - (data (i32.const 5736) "\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data (i32.const 5804) "L") - (data (i32.const 5816) "\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") - (data (i32.const 5884) "L") - (data (i32.const 5896) "\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") - (data (i32.const 5964) "L") - (data (i32.const 5976) "\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z") - (data (i32.const 6048) "\07\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 6076) " \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t") + (data (i32.const 4664) "\01\00\00\00\08\00\00\00M\00a\00r\00 ") + (data (i32.const 4684) "\1c") + (data (i32.const 4696) "\01\00\00\00\08\00\00\00A\00p\00r\00 ") + (data (i32.const 4716) "\1c") + (data (i32.const 4728) "\01\00\00\00\08\00\00\00M\00a\00y\00 ") + (data (i32.const 4748) "\1c") + (data (i32.const 4760) "\01\00\00\00\08\00\00\00J\00u\00n\00 ") + (data (i32.const 4780) "\1c") + (data (i32.const 4792) "\01\00\00\00\08\00\00\00J\00u\00l\00 ") + (data (i32.const 4812) "\1c") + (data (i32.const 4824) "\01\00\00\00\08\00\00\00A\00u\00g\00 ") + (data (i32.const 4844) "\1c") + (data (i32.const 4856) "\01\00\00\00\08\00\00\00S\00e\00p\00 ") + (data (i32.const 4876) "\1c") + (data (i32.const 4888) "\01\00\00\00\08\00\00\00O\00c\00t\00 ") + (data (i32.const 4908) "\1c") + (data (i32.const 4920) "\01\00\00\00\08\00\00\00N\00o\00v\00 ") + (data (i32.const 4940) "\1c") + (data (i32.const 4952) "\01\00\00\00\08\00\00\00D\00e\00c\00 ") + (data (i32.const 4972) "L") + (data (i32.const 4984) "\04\00\00\000\00\00\00\00\12\00\00 \12\00\00@\12\00\00`\12\00\00\80\12\00\00\a0\12\00\00\c0\12\00\00\e0\12\00\00\00\13\00\00 \13\00\00@\13\00\00`\13") + (data (i32.const 5052) "\1c") + (data (i32.const 5064) "\01\00\00\00\02\00\00\00 ") + (data (i32.const 5084) "<") + (data (i32.const 5096) "\01\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000") + (data (i32.const 5148) "<") + (data (i32.const 5160) "\01\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000") + (data (i32.const 5212) "<") + (data (i32.const 5224) "\01\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001") + (data (i32.const 5276) ",") + (data (i32.const 5288) "\01\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000") + (data (i32.const 5324) ",") + (data (i32.const 5336) "\01\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009") + (data (i32.const 5372) "\1c") + (data (i32.const 5384) "\01\00\00\00\n\00\00\00S\00u\00n\00,\00 ") + (data (i32.const 5404) "\1c") + (data (i32.const 5416) "\01\00\00\00\n\00\00\00M\00o\00n\00,\00 ") + (data (i32.const 5436) "\1c") + (data (i32.const 5448) "\01\00\00\00\n\00\00\00T\00u\00e\00,\00 ") + (data (i32.const 5468) "\1c") + (data (i32.const 5480) "\01\00\00\00\n\00\00\00W\00e\00d\00,\00 ") + (data (i32.const 5500) "\1c") + (data (i32.const 5512) "\01\00\00\00\n\00\00\00T\00h\00u\00,\00 ") + (data (i32.const 5532) "\1c") + (data (i32.const 5544) "\01\00\00\00\n\00\00\00F\00r\00i\00,\00 ") + (data (i32.const 5564) "\1c") + (data (i32.const 5576) "\01\00\00\00\n\00\00\00S\00a\00t\00,\00 ") + (data (i32.const 5596) ",") + (data (i32.const 5608) "\04\00\00\00\1c\00\00\00\10\15\00\000\15\00\00P\15\00\00p\15\00\00\90\15\00\00\b0\15\00\00\d0\15") + (data (i32.const 5644) "\1c") + (data (i32.const 5656) "\01\00\00\00\n\00\00\00 \00J\00a\00n\00 ") + (data (i32.const 5676) "\1c") + (data (i32.const 5688) "\01\00\00\00\n\00\00\00 \00F\00e\00b\00 ") + (data (i32.const 5708) "\1c") + (data (i32.const 5720) "\01\00\00\00\n\00\00\00 \00M\00a\00r\00 ") + (data (i32.const 5740) "\1c") + (data (i32.const 5752) "\01\00\00\00\n\00\00\00 \00A\00p\00r\00 ") + (data (i32.const 5772) "\1c") + (data (i32.const 5784) "\01\00\00\00\n\00\00\00 \00M\00a\00y\00 ") + (data (i32.const 5804) "\1c") + (data (i32.const 5816) "\01\00\00\00\n\00\00\00 \00J\00u\00n\00 ") + (data (i32.const 5836) "\1c") + (data (i32.const 5848) "\01\00\00\00\n\00\00\00 \00J\00u\00l\00 ") + (data (i32.const 5868) "\1c") + (data (i32.const 5880) "\01\00\00\00\n\00\00\00 \00A\00u\00g\00 ") + (data (i32.const 5900) "\1c") + (data (i32.const 5912) "\01\00\00\00\n\00\00\00 \00S\00e\00p\00 ") + (data (i32.const 5932) "\1c") + (data (i32.const 5944) "\01\00\00\00\n\00\00\00 \00O\00c\00t\00 ") + (data (i32.const 5964) "\1c") + (data (i32.const 5976) "\01\00\00\00\n\00\00\00 \00N\00o\00v\00 ") + (data (i32.const 5996) "\1c") + (data (i32.const 6008) "\01\00\00\00\n\00\00\00 \00D\00e\00c\00 ") + (data (i32.const 6028) "L") + (data (i32.const 6040) "\04\00\00\000\00\00\00 \16\00\00@\16\00\00`\16\00\00\80\16\00\00\a0\16\00\00\c0\16\00\00\e0\16\00\00\00\17\00\00 \17\00\00@\17\00\00`\17\00\00\80\17") + (data (i32.const 6108) "\1c") + (data (i32.const 6120) "\01\00\00\00\08\00\00\00 \00G\00M\00T") + (data (i32.const 6140) "L") + (data (i32.const 6152) "\01\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") + (data (i32.const 6220) "L") + (data (i32.const 6232) "\01\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T") + (data (i32.const 6300) "L") + (data (i32.const 6312) "\01\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") + (data (i32.const 6380) ",") + (data (i32.const 6392) "\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") + (data (i32.const 6428) ",") + (data (i32.const 6440) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 6476) ",") + (data (i32.const 6488) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 6524) "|") + (data (i32.const 6536) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 6652) ",") + (data (i32.const 6664) "\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") + (data (i32.const 6700) ",") + (data (i32.const 6712) "\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") + (data (i32.const 6748) "<") + (data (i32.const 6760) "\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") + (data (i32.const 6812) "L") + (data (i32.const 6824) "\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") + (data (i32.const 6892) "L") + (data (i32.const 6904) "\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") + (data (i32.const 6972) "\1c") + (data (i32.const 6984) "\01\00\00\00\08\00\00\000\000\000\000") + (data (i32.const 7004) "\1c") + (data (i32.const 7016) "\01\00\00\00\08\00\00\000\000\000\001") + (data (i32.const 7036) "\1c") + (data (i32.const 7048) "\01\00\00\00\08\00\00\001\009\007\006") + (data (i32.const 7068) ",") + (data (i32.const 7080) "\01\00\00\00\0e\00\00\001\009\007\006\00-\000\002") + (data (i32.const 7116) "<") + (data (i32.const 7128) "\01\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004") + (data (i32.const 7180) "L") + (data (i32.const 7192) "\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 7260) "L") + (data (i32.const 7272) "\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 7340) "L") + (data (i32.const 7352) "\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data (i32.const 7420) "L") + (data (i32.const 7432) "\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z") + (data (i32.const 7504) "\07\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 7532) " \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/date/daysSinceEpoch (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) + local.get $6 + i64.extend_i32_s + local.get $5 + i32.const 1000 + i32.mul + i64.extend_i32_s + local.get $4 + i32.const 60000 + i32.mul + i64.extend_i32_s + local.get $3 + i32.const 3600000 + i32.mul + i64.extend_i32_s local.get $0 local.get $1 i32.const 2 @@ -285,26 +301,6 @@ i32.add i32.const 719469 i32.sub - ) - (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) - local.get $6 - i64.extend_i32_s - local.get $5 - i32.const 1000 - i32.mul - i64.extend_i32_s - local.get $4 - i32.const 60000 - i32.mul - i64.extend_i32_s - local.get $3 - i32.const 3600000 - i32.mul - i64.extend_i32_s - local.get $0 - local.get $1 - local.get $2 - call $~lib/date/daysSinceEpoch i64.extend_i32_s i64.const 86400000 i64.mul @@ -313,15 +309,6 @@ i64.add i64.add ) - (func $~lib/date/invalidDate (param $0 i64) (result i32) - local.get $0 - i64.const -8640000000000000 - i64.lt_s - local.get $0 - i64.const 8640000000000000 - i64.gt_s - i32.or - ) (func $~lib/date/ymdFromEpochDays (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -414,29 +401,22 @@ i32.le_s 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) i32.const 1392 call $~lib/rt/itcms/__visit - i32.const 4992 + i32.const 6448 call $~lib/rt/itcms/__visit - i32.const 5088 + i32.const 6544 call $~lib/rt/itcms/__visit i32.const 1200 call $~lib/rt/itcms/__visit i32.const 1056 call $~lib/rt/itcms/__visit - i32.const 1904 + i32.const 2304 + call $~lib/rt/itcms/__visit + i32.const 3360 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -476,49 +456,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 @@ -543,12 +484,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 22492 + i32.const 23948 i32.lt_u local.get $0 i32.load offset=8 @@ -566,7 +507,7 @@ end local.get $0 i32.load offset=8 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -576,15 +517,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 @@ -594,7 +540,7 @@ i32.const 1 else local.get $1 - i32.const 6048 + i32.const 7504 i32.load i32.gt_u if @@ -608,7 +554,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 6052 + i32.const 7508 i32.add i32.load i32.const 32 @@ -620,7 +566,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 @@ -927,12 +895,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 @@ -1182,10 +1150,10 @@ if unreachable end - i32.const 22496 + i32.const 23952 i32.const 0 i32.store - i32.const 24064 + i32.const 25520 i32.const 0 i32.store loop $for-loop|0 @@ -1196,7 +1164,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 22496 + i32.const 23952 i32.add i32.const 0 i32.store offset=4 @@ -1214,7 +1182,7 @@ i32.add i32.const 2 i32.shl - i32.const 22496 + i32.const 23952 i32.add i32.const 0 i32.store offset=96 @@ -1232,13 +1200,13 @@ br $for-loop|0 end end - i32.const 22496 - i32.const 24068 + i32.const 23952 + i32.const 25524 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 22496 + i32.const 23952 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1286,7 +1254,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 @@ -1317,7 +1290,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 22492 + i32.const 23948 i32.lt_u if local.get $0 @@ -1349,7 +1322,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 @@ -1407,7 +1385,7 @@ unreachable end local.get $0 - i32.const 22492 + i32.const 23948 i32.lt_u if local.get $0 @@ -1429,8 +1407,8 @@ local.get $0 i32.const 4 i32.add - local.tee $1 - i32.const 22492 + local.tee $0 + i32.const 23948 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1439,20 +1417,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1465,11 +1443,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 @@ -1479,10 +1460,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 @@ -1503,28 +1486,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 @@ -1621,218 +1604,19 @@ 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.gt_u - if - i32.const 1200 - i32.const 1536 - i32.const 458 - i32.const 29 - 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 - i32.const 4 - i32.sub + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + 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 - 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 1536 - 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 1536 - 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 1536 - 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 - local.tee $2 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1998,6 +1782,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 @@ -2015,12 +1803,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 @@ -2036,13 +1824,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 @@ -2056,478 +1845,1422 @@ 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/date/Date#setTime (param $0 i32) (param $1 i64) - local.get $1 - call $~lib/date/invalidDate + local.get $6 + i32.const 1073741820 + i32.gt_u if - i32.const 1056 - i32.const 1104 - i32.const 107 - i32.const 28 + i32.const 1200 + i32.const 1536 + i32.const 458 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i64.store offset=16 - local.get $0 - local.get $1 - local.get $1 - i64.const 86399999 - i64.sub - local.get $1 - i64.const 0 - i64.ge_s - select - i64.const 86400000 - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - i32.store - local.get $0 - global.get $~lib/date/_month - i32.store offset=4 - local.get $0 - global.get $~lib/date/_day - i32.store offset=8 - ) - (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) - (local $1 i64) - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 - i64.const 0 - i64.lt_s - select - i64.add - i32.wrap_i64 - i32.const 3600000 - i32.div_s - ) - (func $~lib/date/Date#getUTCMinutes (param $0 i32) (result i32) - (local $1 i64) - local.get $0 - i64.load offset=16 - i64.const 3600000 - i64.rem_s - local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 - i64.const 0 - i64.lt_s - select - i64.add - i32.wrap_i64 - i32.const 60000 - i32.div_s - ) - (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32) - (local $1 i64) - local.get $0 - i64.load offset=16 - i64.const 60000 - i64.rem_s - local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 - i64.const 0 - i64.lt_s - select - i64.add - i32.wrap_i64 - i32.const 1000 - i32.div_s - ) - (func $~lib/date/Date#getUTCMilliseconds (param $0 i32) (result i32) - (local $1 i64) - local.get $0 - i64.load offset=16 - i64.const 1000 - i64.rem_s - local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 - i64.const 0 - i64.lt_s - select - i64.add - i32.wrap_i64 - ) - (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i64.load offset=16 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCMilliseconds - i32.sub - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - ) - (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i64.load offset=16 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.sub - i32.const 1000 - i32.mul - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - ) - (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i64.load offset=16 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.sub - i32.const 60000 - i32.mul - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - ) - (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) - local.get $0 - local.get $0 - i64.load offset=16 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCHours - i32.sub - i32.const 3600000 - i32.mul - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - ) - (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.eq + 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 - return + 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 1536 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $0 - i64.const 86400000 - i64.const 0 - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.tee $2 - i64.const 0 - i64.lt_s - select - local.get $2 - i64.add - local.get $0 + local.get $3 + local.get $6 i32.load - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/date/daysSinceEpoch - i64.extend_i32_s - i64.const 86400000 - i64.mul - i64.add - call $~lib/date/Date#setTime - ) - (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=4 - i32.eq + i32.const -4 + i32.and + i32.gt_u if - return + i32.const 0 + i32.const 1536 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $0 - i64.const 86400000 - i64.const 0 - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.tee $2 - i64.const 0 - i64.lt_s - select local.get $2 - i64.add - local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 i32.load - local.get $1 - i32.const 1 + local.set $5 + local.get $3 + i32.const 4 i32.add - local.get $0 - i32.load offset=8 - call $~lib/date/daysSinceEpoch - i64.extend_i32_s - i64.const 86400000 - i64.mul - i64.add - call $~lib/date/Date#setTime - ) - (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) - (local $2 i64) + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1536 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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.eq + 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/date/Date#setTime (param $0 i32) (param $1 i64) + local.get $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or if - return + i32.const 1056 + i32.const 1104 + i32.const 107 + i32.const 28 + call $~lib/builtins/abort + unreachable end local.get $0 - i64.const 86400000 + local.get $1 + i64.store offset=16 + local.get $0 + local.get $1 + local.get $1 + i64.const 86399999 + i64.sub + local.get $1 i64.const 0 + i64.ge_s + select + i64.const 86400000 + i64.div_s + i32.wrap_i64 + call $~lib/date/ymdFromEpochDays + i32.store + local.get $0 + global.get $~lib/date/_month + i32.store offset=4 + local.get $0 + global.get $~lib/date/_day + i32.store offset=8 + ) + (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) + (local $2 i64) + local.get $0 local.get $0 i64.load offset=16 - i64.const 86400000 + local.get $1 + local.get $0 + i64.load offset=16 + i64.const 1000 i64.rem_s local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 i64.const 0 i64.lt_s select - local.get $2 i64.add - local.get $1 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/date/daysSinceEpoch + i32.wrap_i64 + i32.sub i64.extend_i32_s - i64.const 86400000 - i64.mul i64.add call $~lib/date/Date#setTime ) - (func $~lib/date/dayOfWeek (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - i32.const 3 - i32.lt_s - i32.sub - local.tee $0 - i32.const 0 - i32.ge_s - local.set $3 - local.get $2 - local.get $1 - i32.const 1579 - i32.add - i32.load8_u + (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) + (local $2 i64) local.get $0 local.get $0 + i64.load offset=16 + local.get $1 local.get $0 - i32.const 3 - i32.sub - local.get $3 + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $2 + i64.const 60000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s select - i32.const 4 + i64.add + i32.wrap_i64 + i32.const 1000 i32.div_s + i32.sub + i32.const 1000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + ) + (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) + (local $2 i64) local.get $0 local.get $0 - i32.const 99 - i32.sub - local.get $3 + i64.load offset=16 + local.get $1 + local.get $0 + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $2 + i64.const 3600000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s select - i32.const 100 + i64.add + i32.wrap_i64 + i32.const 60000 i32.div_s i32.sub + i32.const 60000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + ) + (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) + (local $2 i64) local.get $0 local.get $0 - i32.const 399 - i32.sub - local.get $3 - select - i32.const 400 - i32.div_s - i32.add - i32.add - i32.add - i32.add - i32.const 7 - i32.rem_s + i64.load offset=16 + local.get $1 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 86400000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s + i32.sub + i32.const 3600000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + ) + (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.eq + if + return + end + local.get $0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $3 + i64.const 86400000 + i64.const 0 + local.get $3 + i64.const 0 + i64.lt_s + select + i64.add + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 2 + i32.le_s + i32.sub local.tee $0 - i32.const 7 + local.get $0 + i32.const 399 + i32.sub + local.get $0 i32.const 0 + i32.ge_s + select + i32.const 400 + i32.div_s + local.tee $4 + i32.const 146097 + i32.mul + local.get $1 + local.get $2 + i32.const -3 + i32.const 9 + local.get $2 + i32.const 2 + i32.gt_s + select + i32.add + i32.const 153 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + i32.add + local.get $0 + local.get $4 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul + local.get $0 + i32.const 2 + i32.shr_u + i32.add + local.get $0 + i32.const 100 + i32.div_u + i32.sub + i32.add + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + call $~lib/date/Date#setTime + ) + (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + local.get $1 + local.get $0 + i32.load offset=4 + i32.eq + if + return + end + local.get $0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $3 + i64.const 86400000 + i64.const 0 + local.get $3 + i64.const 0 + i64.lt_s + select + i64.add local.get $0 + i32.load + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.le_s + i32.sub + local.tee $1 + local.get $1 + i32.const 399 + i32.sub + local.get $1 i32.const 0 - i32.lt_s + i32.ge_s + select + i32.const 400 + i32.div_s + local.tee $4 + i32.const 146097 + i32.mul + local.get $0 + i32.load offset=8 + local.get $2 + i32.const -3 + i32.const 9 + local.get $2 + i32.const 2 + i32.gt_s select i32.add + i32.const 153 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + i32.add + local.get $1 + local.get $4 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul + local.get $0 + i32.const 2 + i32.shr_u + i32.add + local.get $0 + i32.const 100 + i32.div_u + i32.sub + i32.add + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + call $~lib/date/Date#setTime ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (local $3 i64) + (local $4 i32) + local.get $1 + local.get $0 + i32.load + i32.eq + if + return + end + local.get $0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $3 + i64.const 86400000 + i64.const 0 + local.get $3 + i64.const 0 + i64.lt_s + select + i64.add + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 2 + i32.le_s i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $1 + i32.const 399 + i32.sub + local.get $1 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 1872 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.ge_s + select + i32.const 400 + i32.div_s + local.tee $4 + i32.const 146097 + i32.mul + local.get $0 + i32.load offset=8 + local.get $2 + i32.const -3 + i32.const 9 + local.get $2 + i32.const 2 + i32.gt_s + select + i32.add + i32.const 153 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + i32.add + local.get $1 + local.get $4 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul + local.get $0 + i32.const 2 + i32.shr_u + i32.add + local.get $0 + i32.const 100 + i32.div_u + i32.sub + i32.add + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + call $~lib/date/Date#setTime + ) + (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.sub + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - select + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add local.tee $1 - i32.const 10 - i32.ge_u + i32.load8_u + i32.store8 + local.get $0 i32.const 1 i32.add + local.tee $0 local.get $1 - i32.const 10000 - i32.ge_u - i32.const 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 1000 - i32.ge_u + 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 100 - i32.lt_u - select + 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.const 1000000 - i32.ge_u - i32.const 6 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add + local.tee $0 local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add + local.tee $0 local.get $1 - i32.const 100000000 - i32.ge_u + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 i32.add + local.tee $0 local.get $1 - i32.const 10000000 - i32.lt_u - select + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 100000 - i32.lt_u - select - local.get $2 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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.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 - 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 + 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 + 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 - local.get $0 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2539,6 +3272,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 @@ -2710,12 +3461,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 +3484,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,30 +3493,30 @@ 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 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 2000 - local.set $0 + i32.const 3456 + 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 +3527,7 @@ i32.add global.set $~lib/memory/__stack_pointer end - local.get $0 + local.get $2 ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -2892,20 +3652,6 @@ call $~lib/util/string/compareImpl i32.eqz ) - (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/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -2976,7 +3722,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 @@ -3010,8 +3755,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 @@ -3026,7 +3769,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -3049,63 +3792,65 @@ (local $10 i32) local.get $0 i32.load offset=12 - local.tee $9 + local.tee $10 i32.const 1 i32.add - local.tee $10 - local.tee $3 + local.tee $8 + local.set $4 + local.get $8 local.get $0 + local.tee $2 i32.load offset=8 - local.tee $5 + local.tee $7 i32.const 2 i32.shr_u i32.gt_u if - local.get $3 + local.get $4 i32.const 268435455 i32.gt_u if - i32.const 4992 - i32.const 5040 + i32.const 6448 + i32.const 6496 i32.const 17 i32.const 48 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load - local.tee $7 - local.set $2 + local.tee $9 + local.set $3 block $__inlined_func$~lib/rt/itcms/__renew - local.get $5 + local.get $7 i32.const 1 i32.shl - local.tee $4 + local.tee $0 i32.const 1073741820 - local.get $4 + local.get $0 i32.const 1073741820 i32.lt_u select - local.tee $4 - local.get $3 + local.tee $5 + local.get $4 i32.const 8 - local.get $3 + local.get $4 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $3 - local.get $3 - local.get $4 + local.tee $0 + local.get $0 + local.get $5 i32.lt_u select - local.tee $8 - local.tee $4 - local.get $7 + local.tee $5 + local.tee $6 + local.get $9 i32.const 20 i32.sub - local.tee $6 + local.tee $4 i32.load i32.const -4 i32.and @@ -3113,69 +3858,69 @@ i32.sub i32.le_u if - local.get $6 local.get $4 + local.get $6 i32.store offset=16 + local.get $3 + local.set $0 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $4 local.get $6 + local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 - local.get $2 - local.get $4 + local.tee $0 + local.get $3 local.get $6 - i32.load offset=16 - local.tee $2 - local.get $2 local.get $4 + i32.load offset=16 + local.tee $3 + local.get $3 + local.get $6 i32.gt_u select call $~lib/memory/memory.copy - local.get $3 - local.set $2 end - local.get $2 - local.get $5 + local.get $0 + local.get $7 i32.add - local.get $8 local.get $5 + local.get $7 i32.sub call $~lib/memory/memory.fill - local.get $2 - local.get $7 + local.get $0 + local.get $9 i32.ne if - local.get $0 local.get $2 - i32.store local.get $0 + i32.store local.get $2 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $2 + local.get $0 i32.const 0 call $~lib/rt/itcms/__link end - local.get $0 - local.get $8 + local.get $2 + local.get $5 i32.store offset=8 end - local.get $0 + local.get $2 i32.load offset=4 - local.get $9 + local.get $10 i32.const 2 i32.shl i32.add local.get $1 i32.store - local.get $0 + local.get $2 local.get $1 i32.const 1 call $~lib/rt/itcms/__link - local.get $0 - local.get $10 + local.get $2 + local.get $8 i32.store offset=12 ) (func $~lib/util/string/strtol (param $0 i32) (result i32) @@ -3197,73 +3942,79 @@ return end local.get $0 + local.tee $1 i32.load16_u - local.set $1 + local.set $0 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $1 + local.get $0 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $0 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $1 + local.get $0 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $1 + local.get $0 i32.const -8192 i32.add i32.const 10 i32.le_u br_if $__inlined_func$~lib/util/string/isSpace drop - i32.const 1 - local.get $1 - i32.const 5760 - i32.eq - local.get $1 - i32.const 8232 - i32.eq - i32.or - local.get $1 - i32.const 8233 - i32.eq - local.get $1 - i32.const 8239 - i32.eq - i32.or - i32.or - local.get $1 - i32.const 8287 - i32.eq - local.get $1 - i32.const 12288 - i32.eq - i32.or - local.get $1 - i32.const 65279 - i32.eq - i32.or - i32.or - 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 $0 + local.get $1 i32.const 2 i32.add - local.tee $0 + local.tee $1 i32.load16_u - local.set $1 + local.set $0 local.get $2 i32.const 1 i32.sub @@ -3272,12 +4023,12 @@ end end i32.const 1 - local.set $3 + local.set $5 i32.const 1 - local.get $1 + local.get $0 i32.const 43 i32.eq - local.get $1 + local.get $0 i32.const 45 i32.eq select @@ -3293,23 +4044,23 @@ end i32.const -1 i32.const 1 - local.get $1 + local.get $0 i32.const 45 i32.eq select - local.set $3 - local.get $0 + local.set $5 + local.get $1 i32.const 2 i32.add - local.tee $0 + local.tee $1 i32.load16_u - local.set $1 + local.set $0 end local.get $2 i32.const 2 i32.gt_s i32.const 0 - local.get $1 + local.get $0 i32.const 48 i32.eq select @@ -3317,108 +4068,110 @@ block $break|1 block $case2|1 block $case1|1 - local.get $0 + local.get $1 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $1 + local.tee $0 i32.const 98 i32.ne if - local.get $1 + local.get $0 i32.const 111 i32.eq br_if $case1|1 - local.get $1 + local.get $0 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 2 - local.set $5 + local.set $3 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 8 - local.set $5 + local.set $3 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 + local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 i32.const 16 - local.set $5 + local.set $3 end end - local.get $5 + local.get $3 i32.const 10 - local.get $5 + local.get $3 select - local.set $5 + local.set $3 loop $while-continue|2 block $while-break|2 local.get $2 - local.tee $1 + local.tee $0 i32.const 1 i32.sub local.set $2 - local.get $1 + local.get $0 if - local.get $5 - local.get $0 + local.get $3 + local.get $1 i32.load16_u - local.tee $1 + local.tee $0 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 48 i32.sub else - local.get $1 - i32.const 55 - i32.sub - local.get $1 - i32.const 87 - i32.sub - local.get $1 - local.get $1 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - local.get $1 + 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 $1 + local.tee $0 i32.le_u if local.get $4 @@ -3429,22 +4182,22 @@ end br $while-break|2 end - local.get $1 + local.get $0 + local.get $3 local.get $4 - local.get $5 i32.mul i32.add local.set $4 - local.get $0 + local.get $1 i32.const 2 i32.add - local.set $0 + local.set $1 br $while-continue|2 end end end - local.get $3 local.get $4 + local.get $5 i32.mul ) (func $~lib/rt/__visit_members (param $0 i32) @@ -3557,69 +4310,68 @@ global.set $~started call $start:std/date ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 6108 - i32.lt_s - if - i32.const 22512 - i32.const 22560 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) (func $~lib/date/Date#toISOString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 i64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 112 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 i64.const 0 i64.store offset=40 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=48 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=56 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=64 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=72 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=80 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=88 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=96 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=104 local.get $0 @@ -3636,7 +4388,7 @@ select if global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 1616 i32.const 1648 local.get $2 @@ -3646,17 +4398,18 @@ local.get $1 i32.const 31 i32.shr_s - local.tee $4 + local.tee $5 local.get $1 - local.get $4 + local.get $5 i32.add i32.xor - call $~lib/number/I32#toString + call $~lib/util/number/itoa32 local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $5 local.get $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 1872 i32.store offset=12 local.get $1 @@ -3666,6 +4419,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 + local.get $3 local.get $2 local.get $1 call $~lib/string/String.__concat @@ -3674,12 +4428,13 @@ else global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/number/I32#toString + call $~lib/util/number/itoa32 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 1872 i32.store offset=8 local.get $1 @@ -3700,12 +4455,13 @@ i32.store offset=92 local.get $0 i32.load offset=4 - call $~lib/number/I32#toString + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $2 i32.store offset=104 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1872 i32.store offset=108 local.get $2 @@ -3720,9 +4476,10 @@ call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=84 - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1616 i32.store offset=88 local.get $1 @@ -3734,12 +4491,13 @@ i32.store offset=76 local.get $0 i32.load offset=8 - call $~lib/number/I32#toString + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $2 i32.store offset=84 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1872 i32.store offset=92 local.get $2 @@ -3754,26 +4512,41 @@ call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=68 - global.get $~lib/memory/__stack_pointer - i32.const 2032 + local.get $2 + i32.const 3488 i32.store offset=72 local.get $1 - i32.const 2032 + i32.const 3488 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=60 local.get $0 - call $~lib/date/Date#getUTCHours - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $4 + i64.const 86400000 + i64.const 0 + local.get $4 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $2 i32.store offset=68 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1872 i32.store offset=76 local.get $2 @@ -3788,26 +4561,41 @@ call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=52 - global.get $~lib/memory/__stack_pointer - i32.const 2064 + local.get $2 + i32.const 3520 i32.store offset=56 local.get $1 - i32.const 2064 + i32.const 3520 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=44 local.get $0 - call $~lib/date/Date#getUTCMinutes - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $4 + i64.const 3600000 + i64.const 0 + local.get $4 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $2 i32.store offset=52 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1872 i32.store offset=60 local.get $2 @@ -3822,26 +4610,41 @@ call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 2064 + local.get $2 + i32.const 3520 i32.store offset=40 local.get $1 - i32.const 2064 + i32.const 3520 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=28 local.get $0 - call $~lib/date/Date#getUTCSeconds - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $4 + i64.const 60000 + i64.const 0 + local.get $4 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $2 i32.store offset=36 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1872 i32.store offset=44 local.get $2 @@ -3856,26 +4659,39 @@ call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2096 + local.get $2 + i32.const 3552 i32.store offset=24 local.get $1 - i32.const 2096 + i32.const 3552 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 local.get $0 - call $~lib/date/Date#getUTCMilliseconds - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $4 + i64.const 1000 + i64.const 0 + local.get $4 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1872 i32.store offset=28 local.get $0 @@ -3890,13 +4706,14 @@ 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 2128 + local.get $1 + i32.const 3584 i32.store offset=4 local.get $0 - i32.const 2128 + i32.const 3584 call $~lib/string/String.__concat global.get $~lib/memory/__stack_pointer i32.const 112 @@ -3911,69 +4728,139 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 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 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 + local.get $1 + i32.const 0 + i32.store offset=40 + local.get $1 + i32.const 28 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 4560 + i32.const 28 + call $~lib/memory/memory.copy + local.get $1 + local.tee $3 + i32.store global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 4992 + i32.const 48 + call $~lib/memory/memory.copy + local.get $1 + i32.store offset=4 + local.get $0 + i32.load + local.tee $4 + local.get $0 + i32.load offset=4 + local.tee $6 + i32.const 3 + i32.lt_s + i32.sub + local.tee $2 + i32.const 0 + i32.ge_s + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $7 + local.get $6 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $2 + local.get $2 + i32.const 3 + i32.sub + local.get $5 + select + i32.const 4 + i32.div_s + local.get $2 + local.get $2 + i32.const 99 + i32.sub + local.get $5 + select + i32.const 100 + i32.div_s + i32.sub + local.get $2 + local.get $2 + i32.const 399 + i32.sub + local.get $5 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 i32.const 0 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.const 4 - i32.const 3104 - call $~lib/rt/__newBuffer - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 48 - i32.const 4 - i32.const 3536 - call $~lib/rt/__newBuffer - local.tee $3 - i32.store offset=4 - local.get $0 - i32.load - local.tee $1 local.get $0 - i32.load offset=4 - local.tee $4 - local.get $0 - i32.load offset=8 - local.tee $5 - call $~lib/date/dayOfWeek - local.set $6 + i32.const 0 + i32.lt_s + select + i32.add + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 31 i32.shr_s local.tee $0 local.get $0 - local.get $1 + local.get $4 i32.add i32.xor - call $~lib/number/I32#toString + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $8 local.get $0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 1872 i32.store offset=12 local.get $0 @@ -3981,14 +4868,15 @@ call $~lib/string/String#padStart local.tee $0 i32.store offset=16 - local.get $1 + local.get $4 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer + local.tee $4 i32.const 1616 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 1616 local.get $0 call $~lib/string/String.__concat @@ -3996,39 +4884,41 @@ i32.store offset=16 end global.get $~lib/memory/__stack_pointer + local.tee $4 + local.get $3 local.get $2 - local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $1 + local.tee $2 i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $3 local.get $4 + local.get $1 + local.get $6 i32.const 1 i32.sub i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $1 i32.store offset=36 - local.get $1 local.get $2 + local.get $1 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=24 - local.get $5 - call $~lib/number/I32#toString + local.get $7 + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $2 i32.store offset=32 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1872 i32.store offset=40 local.get $2 @@ -4043,13 +4933,14 @@ call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 3616 + local.get $2 + i32.const 5072 i32.store offset=12 local.get $1 - i32.const 3616 + i32.const 5072 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4066,34 +4957,61 @@ (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i64) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 40 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 local.get $0 - call $~lib/date/Date#getUTCHours - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $3 + i64.const 86400000 + i64.const 0 + local.get $3 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s + call $~lib/util/number/itoa32 local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=32 - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1872 i32.store offset=36 local.get $1 @@ -4101,26 +5019,41 @@ call $~lib/string/String#padStart local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 2064 + local.get $2 + i32.const 3520 i32.store offset=28 local.get $1 - i32.const 2064 + i32.const 3520 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 local.get $0 - call $~lib/date/Date#getUTCMinutes - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $3 + i64.const 3600000 + i64.const 0 + local.get $3 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $4 local.get $2 i32.store offset=24 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 1872 i32.store offset=32 local.get $2 @@ -4135,26 +5068,41 @@ call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 2064 + local.get $2 + i32.const 3520 i32.store offset=12 local.get $1 - i32.const 2064 + i32.const 3520 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $0 - call $~lib/date/Date#getUTCSeconds - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $3 + i64.const 60000 + i64.const 0 + local.get $3 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $2 local.get $0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1872 i32.store offset=16 local.get $0 @@ -4178,275 +5126,394 @@ (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) global.get $~lib/memory/__stack_pointer i32.const 96 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 i64.const 0 i64.store offset=40 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=48 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=56 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=64 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=72 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=80 - global.get $~lib/memory/__stack_pointer + local.get $1 i64.const 0 i64.store offset=88 - global.get $~lib/memory/__stack_pointer i32.const 28 i32.const 4 - i32.const 4160 - call $~lib/rt/__newBuffer - local.tee $3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 5616 + i32.const 28 + call $~lib/memory/memory.copy + local.get $1 + local.get $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 48 i32.const 4 - i32.const 4592 - call $~lib/rt/__newBuffer - local.tee $4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 6048 + i32.const 48 + call $~lib/memory/memory.copy + local.get $1 i32.store offset=4 local.get $0 i32.load - local.tee $1 + local.tee $7 local.get $0 i32.load offset=4 - local.tee $5 + local.tee $8 + i32.const 3 + i32.lt_s + i32.sub + local.tee $4 + i32.const 0 + i32.ge_s + local.set $3 local.get $0 i32.load offset=8 - local.tee $6 - call $~lib/date/dayOfWeek - local.set $7 + local.tee $9 + local.get $8 + i32.const 1579 + i32.add + i32.load8_u + local.get $4 + local.get $4 + local.get $4 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $4 + local.get $4 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub + local.get $4 + local.get $4 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $3 + i32.const 7 + i32.const 0 + local.get $3 + i32.const 0 + i32.lt_s + select + i32.add + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $7 i32.const 31 i32.shr_s - local.tee $2 - local.get $1 - local.get $2 + local.tee $3 + local.get $3 + local.get $7 i32.add i32.xor - call $~lib/number/I32#toString - local.set $2 + call $~lib/util/number/itoa32 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.tee $3 + local.get $5 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1872 i32.store offset=12 - local.get $2 + local.get $5 i32.const 4 call $~lib/string/String#padStart - local.tee $2 + local.tee $5 i32.store offset=16 - local.get $1 + local.get $7 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer + local.tee $3 i32.const 1616 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1616 - local.get $2 + local.get $5 call $~lib/string/String.__concat - local.tee $2 + local.tee $5 i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 + local.get $2 + local.get $10 i32.const 2 i32.shl i32.add i32.load local.tee $3 i32.store offset=80 - local.get $6 - call $~lib/number/I32#toString - local.set $1 + local.get $9 + call $~lib/util/number/itoa32 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $2 + local.get $4 i32.store offset=88 - global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1872 i32.store offset=92 - local.get $1 + local.get $4 i32.const 2 call $~lib/string/String#padStart - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=84 local.get $3 - local.get $1 + local.get $2 call $~lib/string/String.__concat - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $2 + local.get $3 i32.store offset=72 - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $5 + local.get $2 + local.get $1 + local.get $8 i32.const 1 i32.sub i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $1 i32.store offset=76 - local.get $1 local.get $3 + local.get $1 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=68 local.get $1 - local.get $2 + local.get $5 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $1 + local.get $2 i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store offset=64 local.get $1 - i32.const 3616 + i32.const 5072 + i32.store offset=64 + local.get $2 + i32.const 5072 call $~lib/string/String.__concat - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=52 local.get $0 - call $~lib/date/Date#getUTCHours - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $6 + i64.const 86400000 + i64.const 0 + local.get $6 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $2 i32.store offset=60 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1872 i32.store offset=68 local.get $2 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=56 + local.get $3 local.get $1 - local.get $2 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $1 + local.get $2 i32.store offset=44 - global.get $~lib/memory/__stack_pointer - i32.const 2064 - i32.store offset=48 local.get $1 - i32.const 2064 + i32.const 3520 + i32.store offset=48 + local.get $2 + i32.const 3520 call $~lib/string/String.__concat - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=36 local.get $0 - call $~lib/date/Date#getUTCMinutes - call $~lib/number/I32#toString + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $6 + i64.const 3600000 + i64.const 0 + local.get $6 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s + call $~lib/util/number/itoa32 local.set $2 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $2 i32.store offset=44 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1872 i32.store offset=52 local.get $2 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=40 + local.get $3 local.get $1 - local.get $2 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.tee $1 + local.get $2 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2064 - i32.store offset=32 local.get $1 - i32.const 2064 + i32.const 3520 + i32.store offset=32 + local.get $2 + i32.const 3520 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=12 local.get $0 - call $~lib/date/Date#getUTCSeconds - call $~lib/number/I32#toString - local.set $0 + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $6 + i64.const 60000 + i64.const 0 + local.get $6 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s + call $~lib/util/number/itoa32 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $0 + local.get $1 i32.store offset=28 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1872 i32.store offset=36 - local.get $0 + local.get $1 i32.const 2 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=24 - local.get $1 + local.get $2 local.get $0 call $~lib/string/String.__concat - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $0 + local.get $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4672 - i32.store offset=20 local.get $0 - i32.const 4672 + i32.const 6128 + i32.store offset=20 + local.get $1 + i32.const 6128 call $~lib/string/String.__concat global.get $~lib/memory/__stack_pointer i32.const 96 @@ -4466,14 +5533,25 @@ i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 i64.const 0 i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $2 i64.const 0 i64.store offset=16 block $folding-inner2 @@ -4508,19 +5586,17 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - local.set $7 + local.set $2 block $folding-inner0 - local.get $5 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 if - local.get $4 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4530,22 +5606,22 @@ i32.store offset=4 local.get $0 i32.load offset=4 - i32.const 2000 + i32.const 3456 i32.store br $folding-inner1 end else - local.get $4 + local.get $2 i32.eqz br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 2147483647 - local.get $4 + local.get $2 i32.const 2147483647 i32.ne select - local.tee $4 + local.tee $2 call $~lib/rt/__newArray local.tee $1 i32.store @@ -4554,38 +5630,38 @@ local.set $5 loop $for-loop|0 local.get $2 - local.get $4 - i32.lt_s + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store offset=8 - local.get $3 + local.get $4 local.get $0 - local.get $2 + local.get $3 i32.const 1 i32.shl i32.add i32.load16_u i32.store16 local.get $5 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store local.get $1 - local.get $3 + local.get $4 i32.const 1 call $~lib/rt/itcms/__link - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end @@ -4599,19 +5675,19 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=12 loop $while-continue|1 local.get $0 local.get $1 - local.get $3 + local.get $4 call $~lib/string/String#indexOf local.tee $5 i32.const -1 i32.xor if local.get $5 - local.get $3 + local.get $4 i32.sub local.tee $6 i32.const 0 @@ -4628,21 +5704,21 @@ i32.store offset=16 local.get $6 local.get $0 - local.get $3 + local.get $4 i32.const 1 i32.shl i32.add local.get $8 call $~lib/memory/memory.copy - local.get $2 + local.get $3 local.get $6 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3456 i32.store offset=20 - local.get $2 - i32.const 2000 + local.get $3 + i32.const 3456 call $~lib/array/Array<~lib/string/String>#push end local.get $9 @@ -4655,20 +5731,20 @@ local.get $5 local.get $7 i32.add - local.set $3 + local.set $4 br $while-continue|1 end end - local.get $3 + local.get $4 i32.eqz if - local.get $2 + local.get $3 local.get $0 call $~lib/array/Array<~lib/string/String>#push br $folding-inner2 end + local.get $2 local.get $4 - local.get $3 i32.sub local.tee $1 i32.const 0 @@ -4678,35 +5754,35 @@ local.get $1 i32.const 1 i32.shl - local.tee $4 + local.tee $2 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 local.get $1 local.get $0 - local.get $3 + local.get $4 i32.const 1 i32.shl i32.add - local.get $4 - call $~lib/memory/memory.copy local.get $2 + call $~lib/memory/memory.copy + local.get $3 local.get $1 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3456 i32.store offset=20 - local.get $2 - i32.const 2000 + local.get $3 + i32.const 3456 call $~lib/array/Array<~lib/string/String>#push end global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 0 @@ -4724,7 +5800,7 @@ i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/date/Date.fromString (param $0 i32) (result i32) (local $1 i32) @@ -4739,17 +5815,28 @@ i32.const 28 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 i32.const 0 i32.store offset=24 local.get $0 @@ -4770,10 +5857,10 @@ local.get $0 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2032 + i32.const 3488 i32.store local.get $0 - i32.const 2032 + i32.const 3488 i32.const 0 call $~lib/string/String#indexOf local.tee $2 @@ -4797,18 +5884,18 @@ local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 2064 + local.tee $2 + i32.const 3520 i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $0 - i32.const 2064 + i32.const 3520 call $~lib/string/String#split local.tee $0 i32.store offset=12 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 i32.const 1 i32.le_s if @@ -4839,6 +5926,7 @@ local.get $2 call $~lib/util/string/strtol local.set $6 + local.get $4 i32.const 3 i32.ge_s if @@ -4849,10 +5937,10 @@ local.tee $0 i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 2096 + i32.const 3552 i32.store local.get $0 - i32.const 2096 + i32.const 3552 i32.const 0 call $~lib/string/String#indexOf local.tee $2 @@ -4891,9 +5979,10 @@ end end global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1616 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 local.get $1 i32.const 1616 call $~lib/string/String#split @@ -4912,9 +6001,7 @@ local.set $1 local.get $2 i32.load offset=12 - local.tee $0 - local.set $8 - local.get $0 + local.tee $8 i32.const 2 i32.ge_s if (result i32) @@ -4963,26 +6050,39 @@ ) (func $start:std/date (local $0 i32) - (local $1 i64) - (local $2 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 i32.const 0 i32.store offset=32 block $folding-inner0 @@ -4994,10 +6094,15 @@ i32.const 0 i32.const 0 call $~lib/date/epochMillis - local.tee $1 - call $~lib/date/invalidDate + local.tee $2 + i64.const -8640000000000000 + i64.lt_s + local.get $2 + i64.const 8640000000000000 + i64.gt_s + i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.eqz i32.eqz if @@ -5016,10 +6121,15 @@ i32.const 0 i32.const 0 call $~lib/date/epochMillis - local.tee $1 - call $~lib/date/invalidDate + local.tee $2 + i64.const -8640000000000000 + i64.lt_s + local.get $2 + i64.const 8640000000000000 + i64.gt_s + i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.eqz i32.eqz if @@ -5038,10 +6148,15 @@ i32.const 0 i32.const 0 call $~lib/date/epochMillis - local.tee $1 - call $~lib/date/invalidDate + local.tee $2 + i64.const -8640000000000000 + i64.lt_s + local.get $2 + i64.const 8640000000000000 + i64.gt_s + i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.eqz i32.eqz if @@ -5060,10 +6175,15 @@ i32.const 0 i32.const 0 call $~lib/date/epochMillis - local.tee $1 - call $~lib/date/invalidDate + local.tee $2 + i64.const -8640000000000000 + i64.lt_s + local.get $2 + i64.const 8640000000000000 + i64.gt_s + i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.const 631152000000 i64.ne if @@ -5082,10 +6202,15 @@ i32.const 0 i32.const 0 call $~lib/date/epochMillis - local.tee $1 - call $~lib/date/invalidDate + local.tee $2 + i64.const -8640000000000000 + i64.lt_s + local.get $2 + i64.const 8640000000000000 + i64.gt_s + i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.const -65007360000000 i64.ne if @@ -5104,10 +6229,15 @@ i32.const 0 i32.const 1 call $~lib/date/epochMillis - local.tee $1 - call $~lib/date/invalidDate + local.tee $2 + i64.const -8640000000000000 + i64.lt_s + local.get $2 + i64.const 8640000000000000 + i64.gt_s + i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.const 1541847600001 i64.ne if @@ -5126,10 +6256,15 @@ i32.const 0 i32.const 0 call $~lib/date/epochMillis - local.tee $1 - call $~lib/date/invalidDate + local.tee $2 + i64.const -8640000000000000 + i64.lt_s + local.get $2 + i64.const 8640000000000000 + i64.gt_s + i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.const 8640000000000000 i64.ne if @@ -5143,19 +6278,34 @@ memory.size i32.const 16 i32.shl - i32.const 22492 + i32.const 23948 i32.sub i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store i32.const 1312 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + 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/toSpace + 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/fromSpace global.get $~lib/memory/__stack_pointer i64.const 1541847600001 @@ -5231,7 +6381,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCHours + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 86400000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s i32.const 22 i32.ne if @@ -5243,7 +6406,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCMinutes + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $2 + i64.const 3600000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s i32.const 9 i32.ne if @@ -5255,7 +6431,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCSeconds + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $2 + i64.const 60000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s i32.const 43 i32.ne if @@ -5267,7 +6456,18 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 i32.const 706 i32.ne if @@ -5320,7 +6520,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCHours + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 86400000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s i32.const 1 i32.ne if @@ -5332,7 +6545,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCMinutes + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $2 + i64.const 3600000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s i32.const 3 i32.ne if @@ -5344,7 +6570,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCSeconds + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $2 + i64.const 60000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s i32.const 11 i32.ne if @@ -5356,7 +6595,18 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 i32.const 274 i32.ne if @@ -5373,7 +6623,18 @@ local.tee $0 i32.store local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 i32.const 984 i32.ne if @@ -5388,7 +6649,18 @@ i32.const 12 call $~lib/date/Date#setUTCMilliseconds local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 i32.const 12 i32.ne if @@ -5403,7 +6675,18 @@ i32.const 568 call $~lib/date/Date#setUTCMilliseconds local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 i32.const 568 i32.ne if @@ -5448,7 +6731,18 @@ i32.const 2000 call $~lib/date/Date#setUTCMilliseconds local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 if i32.const 0 i32.const 1152 @@ -5473,7 +6767,18 @@ i32.const -2000 call $~lib/date/Date#setUTCMilliseconds local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 if i32.const 0 i32.const 1152 @@ -5500,7 +6805,20 @@ local.tee $0 i32.store local.get $0 - call $~lib/date/Date#getUTCSeconds + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $2 + i64.const 60000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s i32.const 31 i32.ne if @@ -5515,7 +6833,20 @@ i32.const 12 call $~lib/date/Date#setUTCSeconds local.get $0 - call $~lib/date/Date#getUTCSeconds + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $2 + i64.const 60000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s i32.const 12 i32.ne if @@ -5530,7 +6861,20 @@ i32.const 50 call $~lib/date/Date#setUTCSeconds local.get $0 - call $~lib/date/Date#getUTCSeconds + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $2 + i64.const 60000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s i32.const 50 i32.ne if @@ -5577,7 +6921,20 @@ local.tee $0 i32.store local.get $0 - call $~lib/date/Date#getUTCMinutes + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $2 + i64.const 3600000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s i32.const 45 i32.ne if @@ -5592,7 +6949,20 @@ i32.const 12 call $~lib/date/Date#setUTCMinutes local.get $0 - call $~lib/date/Date#getUTCMinutes + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $2 + i64.const 3600000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s i32.const 12 i32.ne if @@ -5607,7 +6977,20 @@ i32.const 50 call $~lib/date/Date#setUTCMinutes local.get $0 - call $~lib/date/Date#getUTCMinutes + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $2 + i64.const 3600000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s i32.const 50 i32.ne if @@ -5654,7 +7037,20 @@ local.tee $0 i32.store local.get $0 - call $~lib/date/Date#getUTCHours + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 86400000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s i32.const 17 i32.ne if @@ -5669,7 +7065,20 @@ i32.const 12 call $~lib/date/Date#setUTCHours local.get $0 - call $~lib/date/Date#getUTCHours + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 86400000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s i32.const 12 i32.ne if @@ -5684,7 +7093,20 @@ i32.const 2 call $~lib/date/Date#setUTCHours local.get $0 - call $~lib/date/Date#getUTCHours + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 86400000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s i32.const 2 i32.ne if @@ -5836,7 +7258,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCMinutes + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $2 + i64.const 3600000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s i32.const 3 i32.ne if @@ -5848,7 +7283,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCSeconds + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $2 + i64.const 60000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s i32.const 11 i32.ne if @@ -5860,7 +7308,18 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 i32.const 274 i32.ne if @@ -6009,15 +7468,66 @@ global.get $~lib/memory/__stack_pointer i64.const 1467763200000 call $~lib/date/Date#constructor + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load + local.get $1 + i32.load offset=4 + local.tee $4 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 0 + i32.ge_s + local.set $3 + local.get $1 + i32.load offset=8 + local.get $4 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + local.get $0 + local.get $0 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $0 + local.get $0 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub + local.get $0 + local.get $0 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s local.tee $0 - i32.store offset=4 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 + i32.const 7 + i32.const 0 local.get $0 - i32.load offset=8 - call $~lib/date/dayOfWeek + i32.const 0 + i32.lt_s + select + i32.add i32.const 3 i32.ne if @@ -6031,15 +7541,66 @@ global.get $~lib/memory/__stack_pointer i64.const 1467763199999 call $~lib/date/Date#constructor - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $0 + local.get $1 i32.load - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.tee $4 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 0 + i32.ge_s + local.set $3 + local.get $1 i32.load offset=8 - call $~lib/date/dayOfWeek + local.get $4 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + local.get $0 + local.get $0 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $0 + local.get $0 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub + local.get $0 + local.get $0 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.add i32.const 2 i32.ne if @@ -6053,15 +7614,66 @@ global.get $~lib/memory/__stack_pointer i64.const 1467849599999 call $~lib/date/Date#constructor - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 i32.load - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.tee $4 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 0 + i32.ge_s + local.set $3 + local.get $1 i32.load offset=8 - call $~lib/date/dayOfWeek + local.get $4 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + local.get $0 + local.get $0 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $0 + local.get $0 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub + local.get $0 + local.get $0 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.add i32.const 3 i32.ne if @@ -6075,15 +7687,66 @@ global.get $~lib/memory/__stack_pointer i64.const 1467849600000 call $~lib/date/Date#constructor - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.load - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.tee $4 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 0 + i32.ge_s + local.set $3 + local.get $1 i32.load offset=8 - call $~lib/date/dayOfWeek + local.get $4 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + local.get $0 + local.get $0 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $0 + local.get $0 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub + local.get $0 + local.get $0 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.add i32.const 4 i32.ne if @@ -6097,15 +7760,66 @@ global.get $~lib/memory/__stack_pointer i64.const 1468022400000 call $~lib/date/Date#constructor - local.tee $0 + local.tee $1 i32.store offset=20 - local.get $0 + local.get $1 i32.load - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.tee $4 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 0 + i32.ge_s + local.set $3 + local.get $1 i32.load offset=8 - call $~lib/date/dayOfWeek + local.get $4 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + local.get $0 + local.get $0 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $0 + local.get $0 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub + local.get $0 + local.get $0 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.add i32.const 6 i32.ne if @@ -6119,15 +7833,66 @@ global.get $~lib/memory/__stack_pointer i64.const 1468022399999 call $~lib/date/Date#constructor - local.tee $0 + local.tee $1 i32.store offset=24 + local.get $1 + i32.load + local.get $1 + i32.load offset=4 + local.tee $4 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 0 + i32.ge_s + local.set $3 + local.get $1 + i32.load offset=8 + local.get $4 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + local.get $0 + local.get $0 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $0 + local.get $0 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub local.get $0 - i32.load local.get $0 - i32.load offset=4 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 + i32.const 0 local.get $0 - i32.load offset=8 - call $~lib/date/dayOfWeek + i32.const 0 + i32.lt_s + select + i32.add i32.const 5 i32.ne if @@ -6141,15 +7906,66 @@ global.get $~lib/memory/__stack_pointer i64.const 1468108799999 call $~lib/date/Date#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.tee $4 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 0 + i32.ge_s + local.set $3 + local.get $1 i32.load offset=8 - call $~lib/date/dayOfWeek + local.get $4 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + local.get $0 + local.get $0 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $0 + local.get $0 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub + local.get $0 + local.get $0 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.add i32.const 6 i32.ne if @@ -6163,15 +7979,66 @@ global.get $~lib/memory/__stack_pointer i64.const 1468108800000 call $~lib/date/Date#constructor - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.tee $4 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 0 + i32.ge_s + local.set $3 + local.get $1 i32.load offset=8 - call $~lib/date/dayOfWeek + local.get $4 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + local.get $0 + local.get $0 + i32.const 3 + i32.sub + local.get $3 + select + i32.const 4 + i32.div_s + local.get $0 + local.get $0 + i32.const 99 + i32.sub + local.get $3 + select + i32.const 100 + i32.div_s + i32.sub + local.get $0 + local.get $0 + i32.const 399 + i32.sub + local.get $3 + select + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.add if i32.const 0 i32.const 1152 @@ -6358,13 +8225,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2160 + local.get $1 + i32.const 3616 i32.store offset=32 local.get $0 - i32.const 2160 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if @@ -6384,13 +8252,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2240 + local.get $1 + i32.const 3696 i32.store offset=32 local.get $0 - i32.const 2240 + i32.const 3696 call $~lib/string/String.__eq i32.eqz if @@ -6410,13 +8279,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2320 + local.get $1 + i32.const 3776 i32.store offset=32 local.get $0 - i32.const 2320 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if @@ -6436,13 +8306,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2400 + local.get $1 + i32.const 3856 i32.store offset=32 local.get $0 - i32.const 2400 + i32.const 3856 call $~lib/string/String.__eq i32.eqz if @@ -6462,13 +8333,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2480 + local.get $1 + i32.const 3936 i32.store offset=32 local.get $0 - i32.const 2480 + i32.const 3936 call $~lib/string/String.__eq i32.eqz if @@ -6488,13 +8360,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2560 + local.get $1 + i32.const 4016 i32.store offset=32 local.get $0 - i32.const 2560 + i32.const 4016 call $~lib/string/String.__eq i32.eqz if @@ -6514,13 +8387,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2640 + local.get $1 + i32.const 4096 i32.store offset=32 local.get $0 - i32.const 2640 + i32.const 4096 call $~lib/string/String.__eq i32.eqz if @@ -6540,13 +8414,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2720 + local.get $1 + i32.const 4176 i32.store offset=32 local.get $0 - i32.const 2720 + i32.const 4176 call $~lib/string/String.__eq i32.eqz if @@ -6566,13 +8441,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 2800 + local.get $1 + i32.const 4256 i32.store offset=32 local.get $0 - i32.const 2800 + i32.const 4256 call $~lib/string/String.__eq i32.eqz if @@ -6592,13 +8468,14 @@ call $~lib/date/Date#toDateString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 3648 + local.get $1 + i32.const 5104 i32.store offset=32 local.get $0 - i32.const 3648 + i32.const 5104 call $~lib/string/String.__eq i32.eqz if @@ -6618,13 +8495,14 @@ call $~lib/date/Date#toDateString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 3712 + local.get $1 + i32.const 5168 i32.store offset=32 local.get $0 - i32.const 3712 + i32.const 5168 call $~lib/string/String.__eq i32.eqz if @@ -6644,13 +8522,14 @@ call $~lib/date/Date#toDateString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 3776 + local.get $1 + i32.const 5232 i32.store offset=32 local.get $0 - i32.const 3776 + i32.const 5232 call $~lib/string/String.__eq i32.eqz if @@ -6670,13 +8549,14 @@ call $~lib/date/Date#toTimeString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 3840 + local.get $1 + i32.const 5296 i32.store offset=32 local.get $0 - i32.const 3840 + i32.const 5296 call $~lib/string/String.__eq i32.eqz if @@ -6696,13 +8576,14 @@ call $~lib/date/Date#toTimeString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 3888 + local.get $1 + i32.const 5344 i32.store offset=32 local.get $0 - i32.const 3888 + i32.const 5344 call $~lib/string/String.__eq i32.eqz if @@ -6722,13 +8603,14 @@ call $~lib/date/Date#toUTCString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 4704 + local.get $1 + i32.const 6160 i32.store offset=32 local.get $0 - i32.const 4704 + i32.const 6160 call $~lib/string/String.__eq i32.eqz if @@ -6748,13 +8630,14 @@ call $~lib/date/Date#toUTCString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 4784 + local.get $1 + i32.const 6240 i32.store offset=32 local.get $0 - i32.const 4784 + i32.const 6240 call $~lib/string/String.__eq i32.eqz if @@ -6774,13 +8657,14 @@ call $~lib/date/Date#toUTCString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 4864 + local.get $1 + i32.const 6320 i32.store offset=32 local.get $0 - i32.const 4864 + i32.const 6320 call $~lib/string/String.__eq i32.eqz if @@ -6792,10 +8676,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4944 + local.tee $0 + i32.const 6400 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 4944 + local.get $0 + i32.const 6400 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6812,10 +8697,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5216 + local.tee $0 + i32.const 6672 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5216 + local.get $0 + i32.const 6672 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6832,10 +8718,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5264 + local.tee $0 + i32.const 6720 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5264 + local.get $0 + i32.const 6720 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6852,10 +8739,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5312 + local.tee $0 + i32.const 6768 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5312 + local.get $0 + i32.const 6768 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6872,10 +8760,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5376 + local.tee $0 + i32.const 6832 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5376 + local.get $0 + i32.const 6832 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6892,10 +8781,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5456 + local.tee $0 + i32.const 6912 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5456 + local.get $0 + i32.const 6912 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6912,10 +8802,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5536 + local.tee $0 + i32.const 6992 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5536 + local.get $0 + i32.const 6992 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6932,10 +8823,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5568 + local.tee $0 + i32.const 7024 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5568 + local.get $0 + i32.const 7024 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6952,10 +8844,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5600 + local.tee $0 + i32.const 7056 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5600 + local.get $0 + i32.const 7056 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6972,10 +8865,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5632 + local.tee $0 + i32.const 7088 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5632 + local.get $0 + i32.const 7088 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -6992,10 +8886,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4944 + local.tee $0 + i32.const 6400 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 4944 + local.get $0 + i32.const 6400 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -7012,10 +8907,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5680 + local.tee $0 + i32.const 7136 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5680 + local.get $0 + i32.const 7136 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -7032,10 +8928,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 5312 + local.tee $0 + i32.const 6768 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5312 + local.get $0 + i32.const 6768 call $~lib/date/Date.fromString local.tee $0 i32.store offset=4 @@ -7059,7 +8956,7 @@ global.get $~lib/memory/__stack_pointer i64.const 8640000000000000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $1 i32.store local.get $0 i64.load offset=16 @@ -7073,7 +8970,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i64.load offset=16 i64.const 8640000000000000 i64.ne @@ -7097,7 +8994,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.load i32.const 275760 i32.ne @@ -7121,7 +9018,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.load offset=4 i32.const 9 i32.ne @@ -7145,7 +9042,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.load offset=8 i32.const 13 i32.ne @@ -7161,13 +9058,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $3 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5744 + local.get $3 + i32.const 7200 i32.store offset=32 local.get $0 - i32.const 5744 + i32.const 7200 call $~lib/string/String.__eq i32.eqz if @@ -7178,17 +9076,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5824 + local.get $1 + i32.const 7280 i32.store offset=32 local.get $0 - i32.const 5824 + i32.const 7280 call $~lib/string/String.__eq i32.eqz if @@ -7202,7 +9101,7 @@ global.get $~lib/memory/__stack_pointer i64.const 8639999999999999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i64.const -8639999999999999 @@ -7246,7 +9145,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCHours + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 86400000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s if i32.const 0 i32.const 1152 @@ -7256,7 +9168,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCMinutes + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.tee $2 + i64.const 3600000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s if i32.const 0 i32.const 1152 @@ -7266,7 +9191,20 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCSeconds + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.tee $2 + i64.const 60000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s if i32.const 0 i32.const 1152 @@ -7276,7 +9214,18 @@ unreachable end local.get $0 - call $~lib/date/Date#getUTCMilliseconds + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $2 + i64.const 1000 + i64.const 0 + local.get $2 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 i32.const 1 i32.ne if @@ -7287,17 +9236,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 call $~lib/date/Date#toISOString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.tee $3 + local.get $1 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5904 + local.get $3 + i32.const 7360 i32.store offset=32 - local.get $2 - i32.const 5904 + local.get $1 + i32.const 7360 call $~lib/string/String.__eq i32.eqz if @@ -7312,13 +9262,14 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5984 + local.get $1 + i32.const 7440 i32.store offset=32 local.get $0 - i32.const 5984 + i32.const 7440 call $~lib/string/String.__eq i32.eqz if @@ -7348,11 +9299,22 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 24 i32.const 3 call $~lib/rt/itcms/__new @@ -7371,7 +9333,12 @@ local.get $0 i64.store offset=16 local.get $0 - call $~lib/date/invalidDate + i64.const -8640000000000000 + i64.lt_s + local.get $0 + i64.const 8640000000000000 + i64.gt_s + i32.or if i32.const 1056 i32.const 1104 @@ -7406,6 +9373,221 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (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 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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 1872 + return + 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 $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 1884 + i32.add + i64.load32_u + local.get $2 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + 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 1884 + 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 1884 + 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 + ) (func $~lib/string/String#padStart (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -7417,7 +9599,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -7526,7 +9718,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -7586,7 +9788,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 3456 return end i32.const 0 @@ -7631,18 +9833,28 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + 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.const 2 i32.shl local.tee $3 i32.const 0 - i32.const 0 - call $~lib/rt/__newBuffer + call $~lib/rt/itcms/__new local.tee $2 i32.store i32.const 16 @@ -7675,7 +9887,17 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -7685,7 +9907,7 @@ i32.ge_u if i32.const 1392 - i32.const 5040 + i32.const 6496 i32.const 99 i32.const 42 call $~lib/builtins/abort @@ -7704,8 +9926,8 @@ local.get $0 i32.eqz if - i32.const 5088 - i32.const 5040 + i32.const 6544 + i32.const 6496 i32.const 103 i32.const 40 call $~lib/builtins/abort diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat index 111f1a8d4b..72f358b8ca 100644 --- a/tests/compiler/std/hash.optimized.wat +++ b/tests/compiler/std/hash.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (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))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17788)) @@ -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 43ae270372..e26b679c30 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_i64_=>_i32 (func (param i32 i64) (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_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_i64_=>_none (func (param i32 i64))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i64_=>_none (func (param i32 i64 i64))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) + (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f32_=>_none (func (param i32 f32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) - (type $i32_f32_f32_=>_none (func (param i32 f32 f32))) (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) - (type $i32_f64_f64_=>_none (func (param i32 f64 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -66,15 +56,6 @@ (data (i32.const 1788) "\10\89\10\00\00\00\00\00B\08\00\00\00\00\00\00\02\t\00\00\00\00\00\00P\88\10\00\00\00\00\00\10\t\12\00\00\00\00\00\10\89\00\00\00\00\00\00B\00\00\00\00\00\00\00P\80\00\00\00\00\00\00\10\t\11\00\00\00\00\00\82\08\00\00\00\00\00\00\90\08\11\00\00\00\00\00\10\t\01\00\00\00\00\00\82\00\00\00\00\00\00\00\90\00\01\00\00\00\00\00\10\t\02\00\00\00\00\00\02\01\00\00\00\00\00\00\10\01\02\00\00\00\00\00\10\t\14\00\00\00\00\00\02\n\00\00\00\00\00\00\10\n\14\00\00\00\00\00\10\t\04\00\00\00\00\00\02\02\00\00\00\00\00\00\10\02\04\00\00\00\00\00\10\t2\00\00\00\00\00\02\19\00\00\00\00\00\00\10\192\00\00\00\00\00\10\t4\00\00\00\00\00\02\1a\00\00\00\00\00\00\10\1a4") (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,20 +1066,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1113,11 +1092,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 @@ -1127,10 +1109,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 @@ -1151,28 +1135,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 @@ -1269,271 +1253,72 @@ 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.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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.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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 i32.sub i32.const -4 @@ -1646,6 +1431,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 @@ -1663,12 +1452,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 @@ -1684,13 +1473,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 @@ -1704,36 +1494,250 @@ 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.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end local.tee $2 - local.get $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 + 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 @@ -1741,7 +1745,6 @@ local.get $1 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 i32.eqz if @@ -1774,8 +1777,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 @@ -1787,7 +1788,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1798,24 +1799,13 @@ end end ) - (func $~lib/map/Map#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/map/Map#set:entries (param $0 i32) (param $1 i32) + (func $~lib/map/Map#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 @@ -1828,75 +1818,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 ) @@ -1912,11 +1889,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 @@ -1940,7 +1928,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 @@ -1951,37 +1939,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 @@ -1989,22 +2007,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 @@ -2018,12 +2042,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 @@ -2036,807 +2128,1167 @@ 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 - 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 - 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 + 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 - 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/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $4 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 17 - i32.const 48 - call $~lib/builtins/abort - unreachable - end + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 8 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 8 - i32.gt_u - select - local.get $2 - i32.shl - local.set $1 - local.get $4 - local.set $5 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.load - local.tee $6 - local.set $4 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $3 - if (result i32) - local.get $5 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - else - local.get $1 - end - local.tee $2 - local.get $4 - 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 $2 - i32.store offset=16 - local.get $4 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $2 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $4 - local.get $2 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_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 $2 - 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 $2 - 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 115 - 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 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/array/ensureCapacity + 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.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 - i32.const 0 - call $~lib/array/ensureCapacity - 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 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + i32.const 1 + 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 - call $~lib/array/ensureCapacity + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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.store offset=12 + 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 - i32.const 0 - call $~lib/array/ensureCapacity - 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/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 99 - 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/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 + local.tee $9 + 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 - local.get $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + i32.const 1456 + i32.const 1728 + i32.const 17 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $7 + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $3 if - local.get $2 - local.get $8 - i32.load8_s - local.tee $7 - i32.store8 - local.get $2 - local.get $8 - i32.load8_s offset=1 - i32.store8 offset=1 - local.get $2 + local.get $9 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1073741820 + local.get $1 + i32.const 1073741820 + i32.lt_u + select + local.tee $1 local.get $6 - local.get $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 + local.get $6 + i32.gt_u + select + local.set $6 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/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/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.get $6 + local.get $7 + local.tee $1 + i32.const 20 + i32.sub local.tee $2 - i32.const 1 + i32.load + i32.const -4 i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end + i32.const 16 + i32.sub + i32.le_u if - local.get $0 - return + local.get $2 + local.get $6 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew end + local.get $6 local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (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 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $6 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $6 + i32.gt_u + select + local.set $8 + block $~lib/util/memory/memmove|inlined.0 + local.get $3 + local.tee $2 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 local.get $2 + i32.sub local.get $8 - i32.load - local.tee $7 - i32.store - local.get $2 + i32.sub + i32.const 0 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 - i32.and - i32.const 2 + i32.const 1 i32.shl - i32.add - local.tee $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + local.get $8 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 local.get $2 - i32.const 12 - i32.add - local.set $2 + i32.gt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $2 + i32.const 7 + i32.and + if + local.get $8 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + local.get $2 + local.tee $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $8 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $1 + i64.load + i64.store + local.get $8 + i32.const 8 + i32.sub + local.set $8 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $8 + if + local.get $2 + local.tee $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.load8_u + i32.store8 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $2 + local.get $8 + i32.add + i32.const 7 + i32.and + if + local.get $8 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.get $8 + i32.const 1 + i32.sub + local.tee $8 + i32.add + local.get $1 + local.get $8 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $8 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $8 + i32.const 8 + i32.sub + local.tee $8 + i32.add + local.get $1 + local.get $8 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $8 + if + local.get $2 + local.get $8 + i32.const 1 + i32.sub + local.tee $8 + i32.add + local.get $1 + local.get $8 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 + local.get $3 + local.set $1 + end + local.get $1 + local.get $9 + i32.add + local.get $6 + local.get $9 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $7 + 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 $6 + i32.store offset=8 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 + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $1 - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - return + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 end + local.get $0 + i32.load offset=4 local.get $1 + i32.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 - 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 offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 + local.get $1 + i32.const 2 + i32.shl i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 + local.get $2 + i32.store + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 4 - i32.lt_u - select + local.get $0 + i32.load offset=12 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 + i32.const 1248 + i32.const 1728 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable 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 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2844,1983 +3296,1765 @@ (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.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 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 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 + 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 - i32.const 24 + local.get $2 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.shl i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries + 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 12 + i32.mul + 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=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load + local.tee $8 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + 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 $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + 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.const 4 + 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 $1 - i32.const 0 + local.get $0 + local.get $0 + i32.load offset=20 i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 4 + 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 $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 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.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/map/Map#find + loop $while-continue|0 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 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 1 - i32.add - local.set $2 - br $for-loop|1 end + i32.const 0 + local.set $1 end local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne + i32.eqz 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 - i32.const 100 - i32.lt_s - 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 - end + 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 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 + 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 - call $~lib/builtins/abort - unreachable + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 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 - i32.const 0 + 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 - 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 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 - 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 - if - local.get $2 - local.get $0 - local.get $5 - 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 + call $~lib/rt/itcms/__link 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 + local.get $0 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $4 + 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 $4 + local.get $0 i32.const 0 i32.store offset=16 - local.get $4 + 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) + (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 4 - i32.add + i32.const 20 + 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 + block $folding-inner1 + 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 99 - 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 $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 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.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.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|6 + i32.store 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 + i32.const 3 + 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 + 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 + local.get $5 + i32.store + loop $for-loop|1 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 + i32.const 100 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 44 - 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 24 + i32.shl + i32.const 24 + 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 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 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 $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 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s + local.get $5 + 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 $1 + loop $for-loop|3 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.const 100 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + 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 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 $5 + 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 $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 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 $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 + 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 - 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 + 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.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 + 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 + 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 $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.ne + i32.const 1073741820 + i32.gt_u if + i32.const 1456 + i32.const 1728 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 8 + local.get $8 + i32.const 8 + i32.gt_u + select + 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 local.get $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.lt_s if - local.get $2 - local.get $8 - i32.load8_u - local.tee $7 - i32.store8 - 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 - 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 + local.get $9 + local.get $0 i32.const 12 + i32.mul i32.add - local.set $2 + 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.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 $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/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 $7 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + 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.store + local.get $3 + i32.const 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store local.get $4 - local.get $8 - i32.ne - if - local.get $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + 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 32 + 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 $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 $2 - local.get $8 - i32.load8_u - local.tee $7 - i32.store8 - local.get $2 - local.get $8 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 local.get $6 local.get $7 - call $~lib/util/hash/HASH - local.get $1 - i32.and - i32.const 2 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $7 + i32.load offset=4 + i32.add + i32.load8_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.store + local.get $9 + i32.const 24 i32.shl + i32.const 24 + i32.shr_s + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.tee $7 + 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 $15 + local.get $4 i32.load - i32.store offset=4 - local.get $7 local.get $2 - i32.store - local.get $2 - i32.const 8 + local.get $4 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl 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 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.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.load8_u + local.get $9 + 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 $9 + i32.store8 offset=1 + 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.load8_s + local.tee $8 + i32.store8 + local.get $0 + local.get $3 + i32.load8_s offset=1 + i32.store8 offset=1 + local.get $0 + local.get $11 + local.get $10 + 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 $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.store8 + local.get $2 + local.get $9 + i32.store8 offset=1 + 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 + end + local.get $4 + i32.load offset=20 i32.const 100 - i32.lt_u + 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 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 - 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 - 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 255 - i32.and + local.get $12 + i32.load offset=20 i32.const 100 - i32.lt_u + 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 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 $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 + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $6 + loop $for-loop|6 + local.get $6 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 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 $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 - 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 + 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 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 24 + i32.shl + i32.const 24 + 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 1 - i32.add - local.set $2 - br $for-loop|3 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 - 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 + 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 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 + 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 - i32.const 16 - i32.const 9 - call $~lib/rt/itcms/__new + 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 0 - call $~lib/map/Map#set:buckets - local.get $2 - i32.const 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 $3 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select + local.get $0 + i32.load offset=8 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 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - loop $for-loop|0 + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 local.get $4 - local.get $6 - i32.gt_s + local.get $7 + i32.ne if - local.get $9 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $5 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $0 - local.get $5 + local.get $7 i32.load8_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + local.tee $8 + i32.store8 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + 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 - local.set $0 + 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=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end - local.get $6 - i32.const 1 + local.get $7 + i32.const 12 i32.add - local.set $6 - br $for-loop|0 + local.set $7 + br $while-continue|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 + local.get $6 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 + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + local.get $0 + local.get $1 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 + 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 $4 - i32.const 0 + local.get $0 + local.get $0 + i32.load offset=20 i32.store offset=16 - local.get $4 - i32.const 0 - i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 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 - 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 99 - 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 + ) + (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 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 + 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 - 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 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.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 - if - i32.const 0 - i32.const 1568 - i32.const 54 - 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 $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 $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 + local.set $0 end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 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 i32) (result i32) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + 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 374761395 + 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 $0 - i32.load16_u + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if local.get $1 - i32.const 65535 + i32.load offset=8 + local.tee $3 + i32.const 1 i32.and - i32.eq - end - if - local.get $0 - return + 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 - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 local.get $1 + i32.eqz + if + return + end 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.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 - 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.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 + i32.const 1 + i32.or + i32.store offset=8 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 + i32.const 1 + i32.sub + i32.store offset=20 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 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 local.get $0 - i32.load offset=12 + i32.load offset=20 + local.tee $1 + local.get $1 + i32.const 4 + i32.lt_u + select i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + if (result i32) local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.const 1 - call $~lib/array/ensureCapacity + i32.load offset=20 local.get $0 - local.get $3 - i32.store offset=12 + 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 - 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 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.store offset=12 ) - (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) @@ -4828,2526 +5062,5739 @@ (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 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 + 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 + i32.const 255 i32.and - i32.eqz + i32.const 100 + i32.lt_u 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 + 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 - local.tee $7 i32.load - i32.store offset=4 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 8 + 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 - local.set $2 + 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 $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 + 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 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 $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 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 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.set $1 + loop $for-loop|3 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 + i32.const 255 + 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 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#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 - 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 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $15 + 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 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 $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 - 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 $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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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.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 - 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 $12 + i32.const 1073741820 + i32.gt_u 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 1456 + i32.const 1728 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.const 8 + local.get $12 + i32.const 8 + i32.gt_u + select + 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 - 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.load16_s - 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 13 - 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 - 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 99 - 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 + local.get $14 + local.get $1 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 + call $~lib/array/ensureCapacity + 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 - 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 + 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 - i32.const 0 - local.set $3 - loop $for-loop|8 - local.get $3 - i32.const 16 - i32.shl + 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 - 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 + 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 $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - 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 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 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 - 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 + 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 $8 - i32.ne - if - local.get $8 - 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.get $8 - i32.load16_u - local.tee $7 - i32.store16 - local.get $2 - local.get $8 + local.tee $3 + local.get $14 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $14 i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $6 + i32.add + i32.load8_u + local.set $2 local.get $7 - call $~lib/util/hash/HASH + 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 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 + 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 $8 + i32.const 20 + i32.sub + local.tee $4 + 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 $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 12 + 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/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 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 local.get $2 - local.get $8 - i32.load16_u - local.tee $7 - i32.store16 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 local.get $2 - local.get $8 - i32.load16_u offset=2 - i32.store16 offset=2 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 local.get $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH + i32.const 16 + i32.shr_u + i32.xor + local.tee $1 + local.set $6 + local.get $5 + i32.load local.get $1 + local.get $5 + i32.load offset=4 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.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 $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.load8_u + local.tee $13 + i32.store8 + local.get $0 + local.get $11 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $10 + 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 $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.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 $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 - i32.const 8 + call $~lib/map/Map#set + local.get $3 + i32.const 1 i32.add local.set $2 + br $for-loop|4 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 + local.get $5 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 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 - local.get $2 - i32.const 65535 - i32.and i32.const 100 - i32.lt_u + 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 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 + 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 65535 - i32.and + local.get $9 + i32.load offset=20 i32.const 100 - i32.lt_u + 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 + 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.const 5 - call $~lib/builtins/abort - unreachable + 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.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 $1 - local.get $2 - call $~lib/map/Map#get + 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.const 65535 + i32.const 255 i32.and - i32.const 10 - i32.add - i32.ne + i32.const 50 + i32.lt_u 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 + 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#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 $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne + 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#has (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 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 - i32.const 0 - i32.const 1568 - i32.const 19 - 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 $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 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 end + i32.const 0 + local.set $0 end - local.get $1 - i32.load offset=20 - i32.const 100 + 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 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 2020 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 21 - 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 - global.get $~lib/memory/__stack_pointer - i32.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 + local.tee $2 i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 15 - call $~lib/rt/itcms/__new + 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 - 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - i32.const 1 + local.get $2 + i32.const 3 i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/itcms/__new + 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 $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 + local.get $0 + i32.load offset=8 + local.tee $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - loop $for-loop|0 + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 local.get $4 - local.get $6 - i32.gt_s + local.get $7 + i32.ne if - local.get $9 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $5 + local.get $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $0 - local.get $5 - i32.load16_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + local.get $7 + i32.load16_s + local.tee $8 + i32.store16 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + 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 - local.set $0 + 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=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end - local.get $6 - i32.const 1 + local.get $7 + i32.const 12 i32.add - local.set $6 - br $for-loop|0 + local.set $7 + br $while-continue|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 + local.get $6 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 + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + local.get $0 + local.get $1 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 + 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 $4 - i32.const 0 + local.get $0 + local.get $0 + i32.load offset=20 i32.store offset=16 - local.get $4 - i32.const 0 - i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 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 - 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 99 - 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 - 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 + ) + (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 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 - 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 $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 - 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 + i32.const 0 + local.set $0 end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne + 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.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 + i32.lt_s if + i32.const 1248 + i32.const 1728 + i32.const 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (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 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 - 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 + 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 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|6 end + i32.const 0 + local.set $1 end local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - i32.const 0 - local.set $3 - loop $for-loop|8 + 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) + (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 + 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 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 + 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 + 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 + local.get $5 + i32.store + loop $for-loop|1 local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz + 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 52 - 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 + end + local.get $5 + 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 $1 + loop $for-loop|3 local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has + 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 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + 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 $1 + br $for-loop|3 + end + end + 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 + 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 + i32.const 1456 + i32.const 1728 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 8 + local.get $8 + i32.const 8 + i32.gt_u + select + 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 + local.get $8 + i32.lt_s + if + 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 + end + local.get $7 + local.get $1 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + 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.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 + 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 + 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 $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 99 + 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.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.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 $15 + 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 $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 + 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 $12 + 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 $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 $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 + 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 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 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 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 $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 $7 + 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 $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load16_u + local.tee $8 + i32.store16 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + 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 $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + 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/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 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 + 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 + 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 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/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 + 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) + (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 + 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 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + if + 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 + end + local.get $15 + 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 $1 + loop $for-loop|3 + local.get $1 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + if + 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#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 + 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 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.const 8 + local.get $12 + i32.const 8 + i32.gt_u + select + 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 + 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 + end + local.get $14 + local.get $1 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + 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.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 + 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 $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 99 + 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 + 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.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 - 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/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 + local.get $5 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) - 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 - local.get $2 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 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 + 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|1 - local.get $2 + local.get $9 + 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 65535 + i32.and + i32.const 50 + i32.lt_u if - i32.const 0 - i32.const 1568 + 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.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 $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 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 + 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 - 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 + local.get $15 + i32.load offset=20 + i32.const 50 + i32.ne 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.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 65535 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 $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 $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 - call $~lib/array/Array#__set - local.get $0 + 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 $0 + local.set $2 + br $for-loop|8 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|01 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#get (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 -1028477379 + i32.mul + i32.const 374761397 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.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 + 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 - 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 + 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_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 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 $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 - 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 - 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.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/map/Map#find + loop $while-continue|0 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 + 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 $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 end + i32.const 0 + local.set $1 end local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable + return 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) + 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 $2 + i32.const 1 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 - 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) + i32.const 4 local.get $0 + i32.load offset=20 + local.tee $1 local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne + 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) @@ -7355,980 +10802,1472 @@ (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 $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 + 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 + 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#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 + 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 + 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 + end + local.get $2 + i32.load offset=20 + i32.const 100 i32.ne if - local.get $8 - 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 $0 + loop $for-loop|1 + local.get $0 + 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 $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 $7 i32.load - i32.store offset=8 - local.get $7 + 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 12 + local.get $0 + local.get $0 + i32.const 20 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/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 + call $~lib/map/Map#set 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 $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 $6 - local.get $7 - call $~lib/util/hash/HASH - local.get $1 - i32.and - i32.const 2 - i32.shl + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 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.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 $2 + local.set $0 + 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 $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 + i32.store 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 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 + i32.load offset=8 + local.set $5 + local.get $1 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 + 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 8 - 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 + end + local.get $1 + local.get $0 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + 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 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 10 - i32.add - i32.ne + i32.load offset=12 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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.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#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 + 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 $4 + br $for-loop|2 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 $7 + i32.load offset=20 i32.const 100 - i32.lt_u + i32.ne if - local.get $1 - local.get $2 - 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 $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 $4 + loop $for-loop|3 + local.get $4 + i32.const 50 + i32.lt_s if - i32.const 0 - i32.const 1568 + 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.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 $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 - 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 + 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 $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 $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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 - local.get $4 - local.get $6 - i32.gt_s + local.get $2 + 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.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + 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 - local.get $5 + 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 - call $~lib/array/Array#__set + 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 $0 + local.set $4 + br $for-loop|4 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 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $3 - local.get $2 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 99 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - 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 - 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 + i32.const 0 + i32.const 1568 + i32.const 56 + 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 - 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_u + local.get $2 + call $~lib/map/Map#clear + local.get $2 + i32.load offset=20 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 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 $1 - i32.load offset=20 - i32.const 50 - 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) + (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 2020 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 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 + 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 12 + i32.mul + 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 12 + i32.mul + 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 $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 + local.get $7 + i32.load offset=8 + i32.const 1 + 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 $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 + local.get $2 + local.get $7 + i32.load + local.tee $8 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + 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 $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end - local.get $3 - i32.const 1 + local.get $7 + i32.const 12 i32.add - local.set $3 - br $for-loop|4 + 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.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 + 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/util/hash/HASH (param $0 i64) (result i32) - (local $1 i32) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - i32.wrap_i64 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul - i32.const 374761401 + 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 - i64.const 32 - i64.shr_u - i32.wrap_i64 + 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 -1028477379 i32.mul + i32.const 374761397 i32.add i32.const 17 i32.rotl @@ -8353,1160 +12292,1909 @@ i32.const 16 i32.shr_u i32.xor - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + 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 $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 + 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 - 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 $2 + i32.const 1 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 - 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 i64) (result i32) + i32.const 4 local.get $0 + i32.load offset=20 + local.tee $1 local.get $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - i32.const 0 - i32.ne + 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) + (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 $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-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.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 + 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 + i32.const 100 + i32.lt_u 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 - local.get $2 - local.get $8 - local.get $5 - call $~lib/util/hash/HASH + 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 - local.tee $4 i32.load - i32.store offset=12 - local.get $4 - local.get $2 - i32.store - local.get $2 + 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 $2 + local.set $1 + 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 $14 + i32.load offset=20 + i32.const 100 + i32.ne if - i32.const 1248 - i32.const 1728 - i32.const 115 - 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 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.const 3 - i32.const 0 - call $~lib/array/ensureCapacity - 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 $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u 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 $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 - local.tee $4 i32.load - i32.store offset=16 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 24 + 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 - local.set $2 - end - local.get $9 - i32.const 24 - i32.add - local.set $9 - br $while-continue|0 + 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 - 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 $14 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 $1 + global.get $~lib/memory/__stack_pointer + local.tee $3 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-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $16 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 - local.get $1 - i64.const 100 - i64.lt_s + 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 - 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 + i32.const 1456 + i32.const 1728 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.const 8 + local.get $11 + i32.const 8 + i32.gt_u + select + 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 8 - 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 + end + local.get $12 + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + 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.store + local.get $1 + 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 + 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.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 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne + local.get $12 + i32.load offset=12 + i32.lt_s if + local.get $2 + local.tee $3 + local.get $12 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $12 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + local.get $8 + 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 + i32.load + 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 + 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 + 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 + i32.load + 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.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + local.get $15 + i32.load + local.get $2 + 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 $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 + local.get $15 + 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 $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.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 $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.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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 $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 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + 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 $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#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 $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 + 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 99 - 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 46 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 - 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.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 - 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 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 + 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.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 + 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/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) local.get $0 i32.load - local.get $2 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 - 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 - i64.load - i64.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 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 ) - (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 $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) (local $8 i32) (local $9 i32) @@ -9514,11 +14202,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 @@ -9526,7 +14225,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 @@ -9534,7 +14233,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 @@ -9542,48 +14241,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 + local.get $8 i64.load - local.tee $5 + 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 @@ -9591,24 +14328,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 @@ -9619,13 +14362,87 @@ 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 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 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 + 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 @@ -9638,133 +14455,127 @@ local.get $0 i32.load offset=8 ) - (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 i64) (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 + 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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 i64.store - global.get $~lib/memory/__stack_pointer + ) + (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.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 + i32.load local.set $2 - loop $while-continue|0 - local.get $6 - local.get $9 - i32.ne - if - local.get $9 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $9 - 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.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 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $2 + if local.get $2 - i32.const 24 - i32.add + 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 - local.get $9 - i32.const 24 - i32.add - local.set $9 - br $while-continue|0 end + i32.const 0 + local.set $2 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 + local.get $2 i32.eqz if return @@ -9813,758 +14624,1183 @@ if local.get $0 local.get $3 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end ) - (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 23 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 + (func $~lib/map/Map#clear (param $0 i32) + (local $1 i32) + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets - local.get $2 + 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 $2 + local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries - local.get $2 + 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 $2 + local.get $0 i32.const 0 i32.store offset=16 - local.get $2 + 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 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 4 - i32.add + i32.const 20 + i32.sub 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 + 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 9 - 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 $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_u + local.get $6 + 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 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.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 + 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 18 - 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.wrap_i64 - i32.const 20 - i32.add - i32.ne + 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 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 8 + local.get $10 + i32.const 8 + i32.gt_u + select + 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 - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 - 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 $7 + local.get $1 + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + 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.const 1568 - i32.const 21 + 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 - 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 + i32.store offset=4 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.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.const 1 - i32.and - i32.eqz + 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 99 + 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 - local.get $0 - local.get $5 - i64.load - call $~lib/array/Array#__set - local.get $0 + call $~lib/map/Map#set + local.get $11 i32.const 1 i32.add - local.set $0 + local.set $11 + 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 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 $4 + 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 99 - 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_u + local.get $13 + 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_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 + i64.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i64.const 50 + i64.lt_s if - i32.const 0 - i32.const 1568 - i32.const 52 - 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 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 - local.get $2 - local.get $1 - call $~lib/map/Map#delete - local.get $2 - local.get $1 - call $~lib/map/Map#has + 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 - i32.const 0 - i32.const 1568 - i32.const 54 - 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 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 - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 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 - 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 f32) (result i32) - (local $1 i32) + (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) local.get $0 - i32.reinterpret_f32 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761397 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $1 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 $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 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 + 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 - f32.load - f32.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 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) + (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 $5 i32) + (local $6 i64) (local $7 i32) (local $8 i32) (local $9 i32) @@ -10572,11 +15808,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 @@ -10584,7 +15831,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 @@ -10592,81 +15839,125 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 - i32.const 12 - i32.mul + 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 $9 + local.tee $8 local.get $0 i32.load offset=16 - i32.const 12 - i32.mul + 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 - i32.load offset=8 + local.get $8 + i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $9 - f32.load - local.tee $5 - f32.store - local.get $2 - local.get $9 - i32.load offset=4 - i32.store offset=4 + local.get $8 + i64.load + local.tee $6 + i64.store local.get $2 local.get $8 - local.get $5 - call $~lib/util/hash/HASH + 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 $4 + local.tee $9 i32.load - i32.store offset=8 - local.get $4 + i32.store offset=12 + local.get $9 local.get $2 i32.store local.get $2 - i32.const 12 + i32.const 16 i32.add local.set $2 end - local.get $9 - i32.const 12 + 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 @@ -10677,13 +15968,87 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#get (param $0 i32) (param $1 f32) (result i32) + (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 - call $~lib/util/hash/HASH - call $~lib/map/Map#find - local.tee $0 + 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 @@ -10694,145 +16059,100 @@ unreachable end local.get $0 - i32.load offset=4 + i32.load offset=8 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (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 $0 + i32.load + local.get $0 + 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 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 $9 - 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 $6 - local.get $3 + i32.load 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 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $2 if local.get $2 - local.get $9 - f32.load - local.tee $5 - f32.store - local.get $2 - 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 - local.get $1 + 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 - i32.const 2 - 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 12 - i32.add local.set $2 + br $while-continue|0 end - local.get $9 - i32.const 12 - i32.add - local.set $9 - br $while-continue|0 end + i32.const 0 + local.set $2 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 + local.get $2 i32.eqz if return end local.get $2 local.get $2 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.or - i32.store offset=8 + i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 @@ -10871,942 +16191,1067 @@ if local.get $0 local.get $3 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric + (func $std/map/testNumeric (local $0 i32) - (local $1 f32) + (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 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 - 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 + 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 - 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 + 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 - call $~lib/map/Map#get - local.get $1 - i32.trunc_f32_s - i32.const 10 - i32.add - i32.ne + 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 - i32.const 0 - i32.const 1568 - i32.const 9 - 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 $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 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 $6 + 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 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.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 + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + 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.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.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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 8 - local.get $5 - i32.const 8 - i32.gt_u - select - 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 + i32.store local.get $6 - i32.gt_s + 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 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 8 + local.get $10 + i32.const 8 + i32.gt_u + select + 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 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.lt_s if + local.get $9 local.get $4 - f32.load - local.set $1 - local.get $0 - local.get $3 + i32.const 4 + i32.shl + i32.add + local.tee $3 i32.load offset=12 - i32.ge_u + i32.const 1 + i32.and + i32.eqz if - local.get $0 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + local.get $7 + local.get $1 local.get $3 - local.get $0 + i64.load + call $~lib/array/Array#__set + local.get $1 i32.const 1 i32.add - local.tee $4 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $3 - local.get $4 - i32.store offset=12 + local.set $1 end - local.get $3 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $1 - f32.store - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 + br $for-loop|01 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 - if - local.get $7 - local.get $3 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 99 - 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 - 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.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 - 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 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $7 local.get $1 - f32.const 50 - f32.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_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 - end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if + 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.const 1568 - i32.const 56 + 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 - 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 $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.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 f64) (result i32) - (local $1 i32) - (local $2 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - 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 $2 - 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 $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 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 - local.get $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 - local.tee $2 - i32.const 1 - i32.and - if (result i32) + 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 99 + 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 - else + 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 - local.get $0 - f64.load - f64.eq + 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 $0 - return + 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 - 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 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) - (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 - 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.load offset=20 + i32.const 50 i32.ne if - local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz + 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 $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 $6 local.get $5 - call $~lib/util/hash/HASH - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=12 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 16 + 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 - local.set $2 - 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 f64) (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 + 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 - local.get $0 - i32.load offset=8 + 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 f64) + (local $4 f32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -11815,11 +17260,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 @@ -11827,7 +17283,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 @@ -11835,81 +17291,114 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 - i32.const 24 + 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 $9 + local.tee $8 local.get $0 i32.load offset=16 - i32.const 24 + i32.const 12 i32.mul i32.add - local.set $6 + local.set $5 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $9 + local.get $5 + local.get $8 i32.ne if - local.get $9 - i32.load offset=16 + local.get $8 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $9 - f64.load - local.tee $5 - f64.store - local.get $2 - local.get $9 - f64.load offset=8 - f64.store offset=8 + local.get $8 + f32.load + local.tee $4 + f32.store local.get $2 local.get $8 - local.get $5 - call $~lib/util/hash/HASH + 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 $4 + local.tee $9 i32.load - i32.store offset=16 - local.get $4 + i32.store offset=8 + local.get $9 local.get $2 i32.store local.get $2 - i32.const 24 + i32.const 12 i32.add local.set $2 end - local.get $9 - i32.const 24 + local.get $8 + i32.const 12 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 $6 i32.store offset=12 local.get $0 local.get $0 @@ -11920,25 +17409,169 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) + (func $~lib/map/Map#get (param $0 i32) (param $1 f32) (result i32) (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 $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 - call $~lib/util/hash/HASH - 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 $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=12 + i32.load offset=8 i32.const 1 i32.or - i32.store offset=12 + i32.store offset=8 local.get $0 local.get $0 i32.load offset=20 @@ -11964,1755 +17597,3559 @@ 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 $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 $13 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-inner1 + 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 $std/map/testNumeric - (local $0 i32) - (local $1 f64) - (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 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 + i32.store + local.get $17 + i32.load offset=8 + local.set $11 + local.get $17 + i32.load offset=16 + local.tee $10 + local.set $5 + 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 - f64.const 100 - f64.lt + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_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.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 - 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_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 $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|0 + i32.const 1456 + i32.const 1728 + i32.const 64 + 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 $5 + i32.const 8 + local.get $5 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $15 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 + call $~lib/rt/itcms/__new + local.tee $16 + i32.store offset=4 + local.get $16 + local.get $15 + call $~lib/memory/memory.fill local.get $1 - f64.const 100 - 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 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.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 + local.get $16 + i32.store + local.get $1 + local.get $16 + call $~lib/rt/itcms/__link + local.get $1 + local.get $16 + i32.store offset=4 + local.get $1 + local.get $15 + i32.store offset=8 + local.get $1 + 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 $0 + local.get $1 + i32.store + loop $for-loop|01 + local.get $4 + local.get $10 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $11 + local.get $4 + 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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + 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 $4 + i32.const 1 + i32.add + local.set $4 + 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 + local.get $1 + local.get $2 + i32.const 2 i32.const 0 - i32.const 1568 - i32.const 21 + call $~lib/array/ensureCapacity + 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 $13 + 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 - 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 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 8 - local.get $5 - i32.const 8 - i32.gt_u - select - 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 - if - local.get $10 - local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $4 + 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.const 1 - i32.and - i32.eqz + i32.lt_s if - local.get $4 - f64.load + local.get $12 + local.get $5 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 99 + 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 - local.get $0 - local.get $3 - i32.load offset=12 - i32.ge_u + 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 - local.get $0 i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 115 - 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 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $3 - local.get $4 - i32.store offset=12 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $17 + i32.load + local.get $17 i32.load offset=4 - local.get $0 - i32.const 3 + 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 - f64.store + 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 1 + 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 $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 31 - 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 96 - 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 - if - local.get $7 - local.get $3 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 99 - 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 + 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 - 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 + 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 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 + local.get $11 + i32.load offset=20 + 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 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.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 - f64.const 1 - f64.add - local.set $1 - 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 $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 - ) - (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 + f32.const 0 + local.set $6 + loop $for-loop|3 + local.get $6 + f32.const 50 + 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#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 - return end - return + i32.const 0 + local.set $1 end - local.get $0 - i32.load - local.tee $0 + local.get $1 if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable end - return + local.get $6 + f32.const 1 + f32.add + local.set $6 + br $for-loop|3 end + end + local.get $17 + 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 - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - memory.size - 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 - loop $while-continue|0 - global.get $~lib/rt/itcms/state + f32.const 0 + local.set $6 + loop $for-loop|4 + local.get $6 + f32.const 50 + f32.lt if - call $~lib/rt/itcms/step - drop - br $while-continue|0 + 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#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 + i32.const 0 + i32.const 1568 + i32.const 50 + 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#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 + 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#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 end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state + local.get $17 + i32.load offset=20 + i32.const 50 + i32.ne if - call $~lib/rt/itcms/step - drop - br $while-continue|1 + 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 - 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 - if - i32.const 18432 - i32.const 18480 - 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 0 - i32.store - 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 - 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 + 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 + (func $~lib/map/Map#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 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find + i64.reinterpret_f64 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 + 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 - 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 + if local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl + i32.load offset=12 + local.tee $2 i32.const 1 - i32.or + 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 - 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.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 - local.get $0 - local.get $3 - i32.store + i32.const 0 + local.set $0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.ne ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) + (local $4 i64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - 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 + i32.const 2020 + i32.lt_s if - i32.const 1456 - i32.const 1728 - i32.const 64 - i32.const 60 + 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.get $0 - i32.const 8 - local.get $0 - i32.const 8 - i32.gt_u - select - 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 + i64.const 0 + i64.store 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.const 1 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) + 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.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 local.get $0 i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer + local.tee $9 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 + 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 $3 - local.get $2 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 + local.get $9 + i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $0 + 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 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $1 - i32.const 1 + i64.reinterpret_f64 + local.tee $4 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - local.set $1 + 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 $2 - i32.const 1 + local.get $9 + i32.const 16 i32.add - local.set $2 - br $for-loop|0 + local.set $9 + br $while-continue|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 + local.get $8 i32.store local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:buckets + local.get $8 + call $~lib/rt/itcms/__link local.get $0 - i32.const 3 + local.get $1 i32.store offset=4 local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - call $~lib/map/Map#set:entries + local.get $3 + i32.store offset=8 local.get $0 - i32.const 4 + local.get $3 + call $~lib/rt/itcms/__link + local.get $0 + local.get $7 i32.store offset=12 local.get $0 - i32.const 0 - i32.store offset=16 local.get $0 - i32.const 0 - i32.store offset=20 + 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 ) - (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 + (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 - call $~lib/util/hash/HASH - local.set $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 $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 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.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 f64) + (local $2 i32) + (local $3 i32) + (local $4 i64) local.get $0 i32.load - local.get $5 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.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 + local.set $2 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $2 if - local.get $1 - i32.load offset=4 - local.tee $4 + 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 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq + local.get $2 + f64.load + f64.eq end - br_if $__inlined_func$~lib/map/Map#find - local.get $4 + br_if $__inlined_func$~lib/map/Map#find + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 + i32.eqz 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 - 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 $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 + 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 + 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 - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.store offset=20 local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find + i32.load offset=4 + i32.const 1 + i32.shr_u 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 - 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.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 + 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 - local.get $4 + i32.load offset=20 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 + 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 - i32.store + call $~lib/map/Map#rehash 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) + (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 + 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 + 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 $14 + 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 $17 + i32.load offset=8 + local.set $3 + local.get $17 i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + local.tee $0 + local.set $13 + 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 $16 + i32.const 0 + i32.store offset=8 + local.get $16 + i32.const 0 + i32.store offset=12 + local.get $13 + i32.const 134217727 + i32.gt_u if + i32.const 1456 + i32.const 1728 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.const 8 + local.get $13 + i32.const 8 + i32.gt_u + select + i32.const 3 + i32.shl + local.tee $15 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $12 + i32.store offset=4 + local.get $12 + local.get $15 + call $~lib/memory/memory.fill + local.get $16 + local.get $12 + i32.store + local.get $16 + local.get $12 + call $~lib/rt/itcms/__link + local.get $16 + local.get $12 + i32.store offset=4 + local.get $16 + local.get $15 + i32.store offset=8 + local.get $16 + 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 $2 + local.get $16 + i32.store + loop $for-loop|01 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 + local.get $10 + i32.gt_s + if + local.get $3 + local.get $10 + 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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + 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 $10 i32.const 1 - i32.or + i32.add + local.set $10 + br $for-loop|01 end - call $~lib/map/Map#rehash end + local.get $16 + local.get $1 + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $16 + local.get $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + 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 $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add + 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 - local.get $5 - i32.const 12 - i32.mul + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $3 + global.set $~lib/memory/__stack_pointer local.get $1 - i32.store8 local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 + 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 $9 + local.get $16 + i32.load offset=12 + i32.lt_s + if + local.get $9 + local.get $16 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $16 + i32.load offset=4 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $18 + local.get $5 + local.get $9 + 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 + 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=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 $12 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=4 + local.get $3 + i32.load offset=8 + local.tee $11 + local.get $3 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $10 + local.get $1 + local.set $0 + loop $while-continue|02 + local.get $10 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $11 + f64.load + local.tee $4 + f64.store + local.get $0 + local.get $11 + f64.load offset=8 + f64.store offset=8 + local.get $0 + local.get $2 + local.get $15 + local.get $4 + i64.reinterpret_f64 + local.tee $8 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $8 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $14 + local.get $14 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $14 + local.get $14 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $14 + local.get $14 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $14 + i32.load + i32.store offset=16 + local.get $14 + local.get $0 + i32.store + local.get $0 + i32.const 24 + i32.add + local.set $0 + end + local.get $11 + i32.const 24 + i32.add + local.set $11 + br $while-continue|02 + end + end + local.get $3 + local.get $2 + i32.store + local.get $3 + local.get $2 + call $~lib/rt/itcms/__link + local.get $3 + local.get $15 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + local.get $1 + call $~lib/rt/itcms/__link + local.get $3 + local.get $12 + i32.store offset=12 + local.get $3 + local.get $3 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + 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.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 + 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.const 2 + i32.shl + i32.add + local.tee $2 + i32.load + i32.store offset=16 + 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 $7 + local.get $6 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|2 + end + end + local.get $3 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 - 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 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 + 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 $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 $1 - i32.load offset=4 - local.tee $4 - i32.const 1 - i32.and - if (result i32) + local.get $17 + local.get $18 + call $~lib/map/Map#has + i32.eqz + if i32.const 0 - else - local.get $1 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable end - br_if $__inlined_func$~lib/map/Map#find - local.get $4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|0 + 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 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 $17 + i32.load offset=20 + 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 - 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.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 - local.tee $0 + 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/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 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + end + local.get $0 i32.load - i32.store offset=4 + call $~lib/rt/itcms/__visit local.get $0 - local.get $1 - i32.store + i32.load offset=8 + call $~lib/rt/itcms/__visit + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + memory.size + i32.const 16 + i32.shl + 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 + 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/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) @@ -13720,17 +21157,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 $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 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 + local.tee $5 local.get $0 i32.load offset=4 i32.and @@ -13739,12 +21215,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 @@ -13752,13 +21228,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 @@ -13773,7 +21249,7 @@ if local.get $1 local.get $2 - i32.store16 offset=2 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -13802,7 +21278,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 @@ -13818,15 +21294,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 @@ -13845,7 +21321,7 @@ i32.add local.tee $0 i32.load - i32.store offset=4 + i32.store offset=8 local.get $0 local.get $1 i32.store @@ -13855,111 +21331,244 @@ 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 - call $~lib/util/hash/HASH - local.tee $4 - call $~lib/map/Map#find + 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 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + local.get $0 + i32.const 8 + i32.gt_u + select + 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 - 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 $0 + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + 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.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) @@ -13967,17 +21576,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 @@ -13986,26 +21630,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 @@ -14020,7 +21662,7 @@ if local.get $1 local.get $2 - i32.store16 offset=2 + i32.store offset=4 else local.get $0 i32.load offset=16 @@ -14049,7 +21691,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 @@ -14065,15 +21707,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 @@ -14092,7 +21734,7 @@ i32.add local.tee $0 i32.load - i32.store offset=4 + i32.store offset=8 local.get $0 local.get $1 i32.store @@ -14102,7 +21744,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) @@ -14110,123 +21752,95 @@ 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 - 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 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.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.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.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 - 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 $1 local.get $2 i32.store offset=4 else @@ -14257,29 +21871,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 @@ -14288,10 +21902,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 @@ -14302,7 +21916,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 @@ -14310,7 +21924,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) @@ -14318,21 +21932,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 @@ -14357,130 +22049,64 @@ 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 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 + 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 $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) @@ -14488,16 +22114,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 @@ -14505,13 +22169,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 @@ -14519,26 +22183,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 @@ -14567,12 +22233,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 @@ -14581,24 +22247,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 @@ -14610,9 +22276,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 @@ -14620,7 +22286,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) @@ -14628,21 +22294,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 @@ -14671,41 +22409,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 @@ -14714,9 +22452,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 @@ -14724,7 +22462,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) @@ -14732,16 +22470,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 @@ -14750,12 +22535,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 @@ -14767,7 +22552,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 @@ -14782,7 +22567,7 @@ if local.get $3 local.get $2 - i64.store offset=8 + i32.store offset=8 else local.get $0 i32.load offset=16 @@ -14811,7 +22596,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 @@ -14827,15 +22612,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 @@ -14854,7 +22639,7 @@ i32.add local.tee $0 i32.load - i32.store offset=16 + i32.store offset=12 local.get $0 local.get $3 i32.store @@ -14864,7 +22649,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) @@ -14872,125 +22659,184 @@ 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 + i32.const 0 + call $~lib/array/ensureCapacity + 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 @@ -15019,7 +22865,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 +22875,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 @@ -15053,7 +22899,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 +22908,7 @@ i32.add local.tee $0 i32.load - i32.store offset=8 + i32.store offset=12 local.get $0 local.get $3 i32.store @@ -15072,7 +22918,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) @@ -15080,21 +22926,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 @@ -15123,7 +23041,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 @@ -15133,21 +23051,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 @@ -15157,7 +23075,7 @@ local.get $3 local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -15166,7 +23084,7 @@ i32.add local.tee $0 i32.load - i32.store offset=12 + i32.store offset=8 local.get $0 local.get $3 i32.store @@ -15176,24 +23094,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 @@ -15202,12 +23170,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 @@ -15219,7 +23187,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 @@ -15234,7 +23202,7 @@ if local.get $3 local.get $2 - f64.store offset=8 + i32.store offset=8 else local.get $0 i32.load offset=16 @@ -15263,7 +23231,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 @@ -15279,15 +23247,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 @@ -15297,7 +23265,7 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $6 local.get $0 i32.load offset=4 i32.and @@ -15306,7 +23274,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 6a405d69c7..b729e0bb49 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 $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) + (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $none_=>_f64 (func (result f64))) + (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $none_=>_none (func)) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) + (type $f32_i32_f32_=>_i32 (func (param f32 i32 f32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i64_=>_none (func (param i64))) (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) (type $f64_=>_none (func (param f64))) (type $i64_i64_i64_i64_i64_=>_none (func (param i64 i64 i64 i64 i64))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "Math" "E" (global $~lib/bindings/Math/E f64)) @@ -67,6 +65,7 @@ (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) (global $~lib/math/res128_hi (mut i64) (i64.const 0)) (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) + (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) @@ -77,12 +76,147 @@ (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 - i64.shl + local.get $0 + f64.mul + f64.div + local.get $1 i64.const 1 + i64.shl + i64.eqz + 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 - i64.eqz - 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,148 +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 (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 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 end - return + 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 @@ -2891,168 +3326,167 @@ 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 @@ -3066,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) @@ -3207,7 +3627,7 @@ i32.wrap_i64 i32.const 3 i32.shl - i32.const 1088 + i32.const 5440 i32.add local.tee $7 i64.load @@ -3475,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 @@ -3569,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 @@ -3746,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 @@ -3799,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) @@ -4354,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) @@ -4831,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) @@ -5026,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 @@ -5145,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 @@ -5162,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 @@ -5178,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 @@ -5188,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 @@ -5246,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 @@ -5279,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 @@ -5309,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 @@ -5329,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 @@ -5371,519 +6031,500 @@ 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 - i64.const 0 - local.get $2 - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2047 - i32.eq - select - i64.eqz - 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 + i64.const 0 + local.get $4 + local.get $11 + i32.const 2047 + i32.eq + select + i64.eqz + 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 - local.get $3 - local.get $2 - i32.sub - i32.const 209715200 - i32.ge_u - i32.const 1 - i32.const 0 - local.get $2 - 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 + local.get $5 + local.get $4 + i32.sub + i32.const 209715200 + i32.ge_u + i32.const 1 + i32.const 0 + local.get $4 + 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 - i64.shl + local.get $6 i64.const 1 - local.get $1 - i32.const 1072693248 - i32.eq - select + i64.shl i64.eqz if - f64.const 0 - return - end - end + f64.const -1 + local.get $3 + local.get $3 + f64.mul + f64.div + local.set $3 + br $__inlined_func$~lib/math/NativeMath.log10 + end + local.get $4 + i32.const 31 + i32.shr_u + if + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.div + local.set $3 + br $__inlined_func$~lib/math/NativeMath.log10 + end + i32.const -54 + local.set $7 + local.get $3 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $4 + else + local.get $4 + i32.const 2146435072 + i32.ge_u + if + br $__inlined_func$~lib/math/NativeMath.log10 + else + local.get $6 + i64.const 32 + i64.shl + i64.const 1 + local.get $4 + i32.const 1072693248 + i32.eq + select + i64.eqz + if + f64.const 0 + local.set $3 + br $__inlined_func$~lib/math/NativeMath.log10 + end + 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 @@ -5897,1929 +6538,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 - else - local.get $2 - i64.const 32 + 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 + local.get $6 + i64.eqz + if (result i64) + local.get $4 i64.const 1 - local.get $1 - i32.const 1072693248 - i32.eq - select - i64.eqz + local.get $6 + local.get $4 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $6 + i64.sub + i64.shl + else + local.get $4 + i64.const 4503599627370495 + i64.and + 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.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.set $14 + block $~lib/util/math/pow_lut|inlined.0 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 $1 - f64.const 0 - local.get $8 - i32.const 0 - i32.ge_s - select - f64.const 0 - local.get $1 - f64.neg - local.get $8 - i32.const 0 - i32.ge_s - select - local.get $4 - i32.const 1072693248 - i32.ge_s - select - f64.const nan:0x8000000000000 - local.get $18 - local.get $4 - i32.const 1072693248 - i32.sub - i32.or - select - return - 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 @@ -7840,16 +8286,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 @@ -7902,222 +8346,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 + 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 - 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 + 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 @@ -8125,68 +8740,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 @@ -8207,7 +8858,7 @@ i32.eqz if i32.const 0 - i32.const 3648 + i32.const 14400 i32.const 1417 i32.const 5 call $~lib/builtins/abort @@ -8252,11 +8903,13 @@ ) (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 @@ -8275,11 +8928,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 @@ -8293,8 +8948,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 @@ -8309,7 +8964,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 @@ -8470,63 +9125,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) @@ -8535,8 +9197,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 @@ -8550,7 +9212,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 @@ -8704,66 +9366,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) @@ -8773,7 +9442,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 @@ -8850,11 +9520,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 @@ -8982,9 +9730,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 @@ -9078,371 +9826,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 @@ -9534,22 +10459,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) @@ -9737,6 +10646,7 @@ (local $4 i32) (local $5 f64) (local $6 i32) + (local $7 i32) local.get $0 i64.reinterpret_f64 local.tee $2 @@ -9783,11 +10693,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 @@ -9796,15 +10784,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 @@ -9819,25 +10807,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 @@ -9852,24 +10840,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 @@ -9881,10 +10869,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 @@ -9909,86 +10897,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 @@ -10000,167 +11253,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 @@ -10169,13 +11284,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) @@ -10183,12 +11292,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 @@ -10203,14 +11313,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 @@ -10223,12 +11333,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 @@ -10237,28 +11347,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 @@ -10342,22 +11452,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) @@ -10366,9 +11460,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 @@ -10500,11 +11595,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 @@ -10662,19 +11835,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 @@ -10716,7 +11889,7 @@ if local.get $0 local.set $2 - local.get $8 + local.get $9 f64.neg local.set $0 end @@ -10762,25 +11935,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 @@ -10789,32 +11953,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 @@ -10837,7 +12253,7 @@ local.get $0 i64.mul local.set $0 - br $while-continue|0 + br $while-continue|1 end end local.get $2 @@ -10846,7 +12262,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 @@ -10866,7 +12438,7 @@ local.get $0 i32.mul local.set $0 - br $while-continue|0 + br $while-continue|1 end end local.get $2 @@ -11505,10 +13077,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 @@ -11520,10 +13090,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 @@ -11535,10 +13103,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 @@ -11550,10 +13116,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 @@ -11565,10 +13129,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 @@ -11580,10 +13142,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 @@ -11595,10 +13155,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 @@ -11610,10 +13168,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 @@ -11625,10 +13181,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 @@ -11640,10 +13194,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 @@ -11655,10 +13207,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 @@ -11670,10 +13220,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 @@ -11685,10 +13233,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 @@ -11700,10 +13246,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 @@ -11715,10 +13259,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 @@ -11730,10 +13272,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 @@ -11745,10 +13285,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 @@ -11760,10 +13298,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 @@ -11775,10 +13311,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 @@ -11790,10 +13324,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 @@ -11805,10 +13337,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 @@ -11820,10 +13350,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 @@ -11835,10 +13363,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 @@ -11850,10 +13376,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 @@ -11865,10 +13389,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 @@ -11880,10 +13402,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 @@ -11895,10 +13415,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 @@ -11910,10 +13428,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 @@ -11925,10 +13441,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 @@ -11938,9 +13452,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 @@ -11952,7 +13476,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 @@ -11962,9 +13496,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 @@ -11974,9 +13518,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 @@ -11988,7 +13542,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 @@ -12000,7 +13564,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 @@ -12010,9 +13584,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 @@ -12024,7 +13608,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 @@ -12036,7 +13630,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 @@ -12046,9 +13650,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 @@ -12060,7 +13674,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 @@ -12070,9 +13694,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 @@ -12084,7 +13718,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 @@ -12094,9 +13738,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 @@ -12108,7 +13762,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 @@ -12118,9 +13782,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 @@ -12132,7 +13806,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 @@ -12364,9 +14048,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 @@ -12377,9 +14071,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 @@ -12390,9 +14094,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 @@ -12403,9 +14117,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 @@ -12416,9 +14140,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 @@ -12429,9 +14163,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 @@ -12442,9 +14186,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 @@ -12455,9 +14209,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 @@ -12468,9 +14232,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 @@ -12481,9 +14255,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 @@ -12494,9 +14278,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 @@ -12507,9 +14301,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 @@ -12520,9 +14324,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 @@ -12533,9 +14347,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 @@ -12546,9 +14370,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 @@ -12559,9 +14393,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 @@ -12572,9 +14416,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 @@ -12585,9 +14439,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 @@ -12598,9 +14462,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 @@ -12611,9 +14485,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 @@ -12624,10 +14508,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 @@ -12638,10 +14521,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 @@ -12652,10 +14534,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 @@ -12666,10 +14547,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 @@ -12680,10 +14560,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 @@ -12694,10 +14573,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 @@ -12708,10 +14586,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 @@ -12722,10 +14599,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 @@ -12736,10 +14612,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 @@ -12750,10 +14625,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 @@ -12764,10 +14638,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 @@ -12778,10 +14651,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 @@ -12792,10 +14664,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 @@ -12806,10 +14677,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 @@ -12820,10 +14690,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 @@ -12834,10 +14703,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 @@ -12848,10 +14716,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 @@ -12862,10 +14729,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 @@ -12876,10 +14742,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 @@ -12890,10 +14755,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 @@ -12904,10 +14768,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 @@ -13412,9 +15275,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 @@ -13425,9 +15298,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 @@ -13438,9 +15321,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 @@ -13451,9 +15344,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 @@ -13464,9 +15367,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 @@ -13477,9 +15390,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 @@ -13490,9 +15413,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 @@ -13503,9 +15436,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 @@ -13516,9 +15459,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 @@ -13529,9 +15482,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 @@ -13542,9 +15505,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 @@ -13555,9 +15528,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 @@ -13568,9 +15551,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 @@ -13581,9 +15574,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 @@ -13594,9 +15597,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 @@ -13607,9 +15620,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 @@ -13620,9 +15643,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 @@ -13633,9 +15666,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 @@ -13646,9 +15689,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 @@ -13659,9 +15712,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 @@ -14322,9 +16385,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 @@ -14335,9 +16408,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 @@ -14348,9 +16431,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 @@ -14361,9 +16454,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 @@ -14374,9 +16477,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 @@ -14387,9 +16500,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 @@ -14400,9 +16523,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 @@ -14413,9 +16546,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 @@ -14426,9 +16569,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 @@ -14439,9 +16592,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 @@ -14452,9 +16615,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 @@ -14465,9 +16638,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 @@ -14478,9 +16661,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 @@ -14491,9 +16684,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 @@ -14504,9 +16707,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 @@ -14517,9 +16730,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 @@ -14530,9 +16753,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 @@ -14543,9 +16776,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 @@ -15979,10 +18222,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 @@ -15994,10 +18236,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 @@ -16009,10 +18250,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 @@ -16024,10 +18264,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 @@ -16039,10 +18278,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 @@ -16054,10 +18292,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 @@ -16069,10 +18306,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 @@ -16084,10 +18320,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 @@ -16099,10 +18334,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 @@ -16114,10 +18348,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 @@ -16129,10 +18362,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 @@ -16144,10 +18376,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 @@ -16159,10 +18390,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 @@ -16174,10 +18404,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 @@ -16189,10 +18418,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 @@ -16204,10 +18432,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 @@ -16219,10 +18446,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 @@ -16234,10 +18460,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 @@ -16249,10 +18474,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 @@ -16264,10 +18488,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 @@ -16279,10 +18502,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 @@ -16294,10 +18516,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 @@ -16309,10 +18530,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 @@ -16324,10 +18544,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 @@ -16339,10 +18558,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 @@ -16354,10 +18572,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 @@ -16369,10 +18586,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 @@ -16384,10 +18600,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 @@ -16399,10 +18614,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 @@ -16414,10 +18628,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 @@ -16429,10 +18642,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 @@ -16444,10 +18656,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 @@ -16459,10 +18670,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 @@ -16474,10 +18684,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 @@ -16489,10 +18698,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 @@ -16504,10 +18712,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 @@ -16519,10 +18726,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 @@ -16534,10 +18740,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 @@ -16808,10 +19013,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 @@ -16822,10 +19026,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 @@ -16836,10 +19039,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 @@ -16850,10 +19052,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 @@ -16864,10 +19065,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 @@ -16878,10 +19078,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 @@ -16892,10 +19091,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 @@ -16906,10 +19104,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 @@ -16920,10 +19117,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 @@ -16934,10 +19130,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 @@ -16948,10 +19143,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 @@ -16962,10 +19156,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 @@ -16976,10 +19169,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 @@ -16990,10 +19182,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 @@ -17004,10 +19195,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 @@ -17018,10 +19208,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 @@ -17032,10 +19221,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 @@ -17046,10 +19234,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 @@ -17060,10 +19247,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 @@ -17074,10 +19260,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 @@ -17087,9 +19272,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 @@ -17099,9 +19294,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 @@ -17111,9 +19316,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 @@ -17123,9 +19338,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 @@ -17135,9 +19360,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 @@ -17147,9 +19382,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 @@ -17159,9 +19404,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 @@ -17171,9 +19426,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 @@ -17183,9 +19448,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 @@ -17195,9 +19470,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 @@ -17209,7 +19494,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 @@ -17221,7 +19516,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 @@ -17233,7 +19538,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 @@ -17245,7 +19560,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 @@ -17257,7 +19582,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 @@ -17269,7 +19604,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 @@ -17281,19 +19626,39 @@ 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 - i32.const 1056 - i32.const 862 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1056 + i32.const 862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + 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 - f64.const 0.5 - f64.const 1 - call $std/math/test_ceil i32.eqz if i32.const 0 @@ -17303,9 +19668,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 @@ -17315,9 +19690,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 @@ -17327,9 +19712,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 @@ -17339,9 +19734,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 @@ -17351,9 +19756,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 @@ -17363,9 +19778,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 @@ -17375,9 +19800,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 @@ -17389,7 +19824,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 @@ -17401,7 +19846,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 @@ -17413,7 +19868,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 @@ -17425,7 +19890,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 @@ -17437,7 +19912,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 @@ -17449,7 +19934,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 @@ -17461,7 +19956,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 @@ -17471,9 +19976,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 @@ -17483,9 +19998,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 @@ -17495,9 +20020,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 @@ -17507,9 +20042,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 @@ -17519,9 +20064,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 @@ -17531,9 +20086,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 @@ -17543,9 +20108,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 @@ -17555,9 +20130,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 @@ -17569,7 +20154,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 @@ -17581,7 +20176,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 @@ -17593,7 +20198,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 @@ -17605,7 +20220,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 @@ -17617,7 +20242,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 @@ -17629,7 +20264,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 @@ -17641,7 +20286,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 @@ -17651,9 +20306,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 @@ -17663,9 +20328,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 @@ -17675,9 +20350,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 @@ -17687,9 +20372,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 @@ -17699,9 +20394,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 @@ -17711,9 +20416,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 @@ -17723,9 +20438,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 @@ -17735,9 +20460,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 @@ -18463,9 +21198,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 @@ -18476,9 +21221,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 @@ -18489,9 +21244,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 @@ -18502,9 +21267,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 @@ -18515,9 +21290,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 @@ -18528,9 +21313,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 @@ -18541,9 +21336,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 @@ -18554,9 +21359,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 @@ -18567,9 +21382,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 @@ -18580,9 +21405,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 @@ -18593,9 +21428,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 @@ -18605,10 +21450,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 @@ -18619,9 +21474,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 @@ -18632,9 +21497,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 @@ -18645,9 +21520,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 @@ -18658,9 +21543,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 @@ -18671,9 +21566,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 @@ -18684,9 +21589,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 @@ -18697,9 +21612,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 @@ -18710,9 +21635,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 @@ -18723,9 +21658,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 @@ -18736,9 +21681,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 @@ -18749,9 +21704,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 @@ -18762,9 +21727,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 @@ -18775,9 +21750,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 @@ -18788,9 +21773,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 @@ -18801,9 +21796,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 @@ -18814,9 +21819,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 @@ -18827,9 +21842,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 @@ -18840,9 +21865,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 @@ -18853,9 +21888,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 @@ -18866,9 +21911,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 @@ -18879,9 +21934,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 @@ -18892,9 +21957,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 @@ -18905,9 +21980,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 @@ -18918,9 +22003,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 @@ -18931,9 +22026,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 @@ -18944,9 +22049,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 @@ -18957,9 +22072,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 @@ -18970,9 +22095,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 @@ -18983,9 +22118,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 @@ -18996,9 +22141,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 @@ -19009,9 +22164,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 @@ -19022,9 +22187,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 @@ -19035,9 +22210,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 @@ -19048,9 +22233,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 @@ -19061,9 +22256,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 @@ -19074,9 +22279,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 @@ -19087,9 +22302,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 @@ -19100,9 +22325,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 @@ -19113,9 +22348,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 @@ -19126,9 +22371,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 @@ -19139,9 +22394,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 @@ -19152,9 +22417,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 @@ -19165,9 +22440,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 @@ -19178,9 +22463,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 @@ -19191,9 +22486,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 @@ -19204,9 +22509,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 @@ -19217,9 +22532,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 @@ -19230,9 +22555,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 @@ -19243,9 +22578,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 @@ -19256,9 +22601,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 @@ -19269,9 +22624,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 @@ -19282,9 +22647,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 @@ -19295,9 +22670,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 @@ -19308,9 +22693,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 @@ -19321,9 +22716,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 @@ -19334,9 +22739,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 @@ -19347,9 +22762,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 @@ -19360,9 +22785,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 @@ -19373,9 +22808,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 @@ -19386,9 +22831,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 @@ -19399,9 +22854,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 @@ -19412,9 +22877,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 @@ -19425,9 +22900,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 @@ -19438,9 +22923,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 @@ -19451,9 +22946,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 @@ -19464,9 +22969,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 @@ -19477,9 +22992,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 @@ -19490,9 +23015,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 @@ -19503,9 +23038,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 @@ -19516,9 +23061,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 @@ -19529,9 +23084,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 @@ -19542,9 +23107,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 @@ -19555,9 +23130,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 @@ -19568,9 +23153,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 @@ -19581,9 +23176,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 @@ -19594,9 +23199,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 @@ -19607,9 +23222,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 @@ -19620,9 +23245,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 @@ -19633,9 +23268,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 @@ -19646,9 +23291,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 @@ -19659,9 +23314,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 @@ -19672,9 +23337,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 @@ -19685,9 +23360,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 @@ -19698,9 +23383,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 @@ -19711,9 +23406,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 @@ -19724,9 +23429,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 @@ -19737,9 +23452,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 @@ -19750,9 +23475,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 @@ -19763,9 +23498,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 @@ -19776,9 +23521,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 @@ -19789,9 +23544,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 @@ -19802,9 +23567,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 @@ -19815,9 +23590,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 @@ -19828,9 +23613,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 @@ -19841,9 +23636,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 @@ -19854,9 +23659,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 @@ -19867,9 +23682,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 @@ -19880,9 +23705,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 @@ -19893,9 +23728,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 @@ -19906,9 +23751,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 @@ -19919,9 +23774,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 @@ -19932,9 +23797,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 @@ -19945,9 +23820,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 @@ -19958,9 +23843,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 @@ -19971,9 +23866,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 @@ -19984,9 +23889,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 @@ -19997,9 +23912,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 @@ -20010,9 +23935,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 @@ -20023,9 +23958,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 @@ -20036,9 +23981,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 @@ -20049,9 +24004,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 @@ -20062,9 +24027,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 @@ -20075,9 +24050,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 @@ -20088,9 +24073,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 @@ -21684,9 +25679,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 @@ -21697,9 +25702,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 @@ -21710,9 +25725,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 @@ -21723,9 +25748,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 @@ -21736,9 +25771,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 @@ -21749,9 +25794,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 @@ -21762,9 +25817,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 @@ -21775,9 +25840,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 @@ -21788,9 +25863,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 @@ -21801,9 +25886,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 @@ -21814,9 +25909,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 @@ -21827,9 +25932,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 @@ -21840,9 +25955,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 @@ -21853,9 +25978,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 @@ -21866,9 +26001,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 @@ -21879,9 +26024,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 @@ -21892,9 +26047,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 @@ -21905,9 +26070,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 @@ -21918,9 +26093,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 @@ -21931,9 +26116,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 @@ -21944,9 +26139,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 @@ -21957,9 +26162,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 @@ -21970,9 +26185,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 @@ -21983,9 +26208,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 @@ -21996,9 +26231,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 @@ -22009,9 +26254,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 @@ -22022,9 +26277,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 @@ -22035,9 +26300,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 @@ -22048,9 +26323,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 @@ -22061,9 +26346,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 @@ -22074,9 +26369,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 @@ -22087,9 +26392,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 @@ -22100,9 +26415,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 @@ -22113,9 +26438,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 @@ -22126,9 +26461,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 @@ -22139,9 +26484,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 @@ -22152,9 +26507,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 @@ -22165,9 +26530,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 @@ -22178,9 +26553,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 @@ -22191,9 +26576,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 @@ -22204,9 +26599,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 @@ -22217,9 +26622,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 @@ -22230,9 +26645,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 @@ -22579,9 +27004,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 @@ -22592,9 +27027,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 @@ -22605,9 +27050,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 @@ -22618,9 +27073,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 @@ -22631,9 +27096,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 @@ -22644,9 +27119,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 @@ -22657,9 +27142,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 @@ -22670,9 +27165,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 @@ -22683,9 +27188,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 @@ -22696,9 +27211,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 @@ -22709,9 +27234,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 @@ -22722,9 +27257,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 @@ -22735,9 +27280,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 @@ -22748,9 +27303,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 @@ -22761,9 +27326,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 @@ -22774,9 +27349,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 @@ -22787,9 +27372,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 @@ -22800,9 +27395,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 @@ -22813,9 +27418,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 @@ -23519,10 +28134,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 @@ -23533,10 +28147,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 @@ -23547,10 +28160,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 @@ -23561,10 +28173,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 @@ -23575,10 +28186,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 @@ -23589,10 +28199,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 @@ -23603,10 +28212,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 @@ -23617,10 +28225,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 @@ -23631,10 +28238,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 @@ -23645,10 +28251,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 @@ -23658,9 +28263,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 @@ -23670,9 +28285,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 @@ -23682,9 +28307,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 @@ -23694,9 +28329,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 @@ -23706,9 +28351,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 @@ -23718,9 +28373,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 @@ -23730,9 +28395,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 @@ -23742,9 +28417,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 @@ -23754,9 +28439,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 @@ -23766,9 +28461,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 @@ -23780,7 +28485,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 @@ -23792,7 +28507,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 @@ -23804,7 +28529,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 @@ -23816,7 +28551,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 @@ -23828,7 +28573,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 @@ -23840,7 +28595,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 @@ -23852,7 +28617,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 @@ -23862,9 +28637,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 @@ -23874,9 +28659,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 @@ -23886,9 +28681,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 @@ -23898,9 +28703,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 @@ -23910,9 +28725,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 @@ -23922,9 +28747,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 @@ -23934,9 +28769,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 @@ -23946,9 +28791,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 @@ -24285,10 +29140,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 @@ -24300,10 +29154,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 @@ -24315,10 +29168,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 @@ -24330,10 +29182,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 @@ -24345,10 +29196,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 @@ -24360,10 +29210,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 @@ -24375,10 +29224,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 @@ -24390,10 +29238,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 @@ -24405,10 +29252,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 @@ -24420,10 +29266,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 @@ -24435,10 +29280,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 @@ -24450,10 +29294,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 @@ -24465,10 +29308,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 @@ -24480,10 +29322,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 @@ -24495,10 +29336,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 @@ -24510,10 +29350,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 @@ -24525,10 +29364,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 @@ -24540,10 +29378,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 @@ -24555,10 +29392,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 @@ -24570,10 +29406,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 @@ -24585,10 +29420,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 @@ -24600,10 +29434,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 @@ -24615,10 +29448,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 @@ -24630,10 +29462,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 @@ -24645,10 +29476,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 @@ -24660,10 +29490,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 @@ -24675,10 +29504,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 @@ -24690,10 +29518,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 @@ -24705,10 +29532,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 @@ -24720,10 +29546,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 @@ -24735,10 +29560,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 @@ -24750,10 +29574,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 @@ -24765,10 +29588,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 @@ -24780,10 +29602,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 @@ -24795,10 +29616,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 @@ -24810,10 +29630,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 @@ -24825,10 +29644,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 @@ -24840,10 +29658,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 @@ -24855,10 +29672,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 @@ -24870,10 +29686,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 @@ -24885,10 +29700,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 @@ -24900,10 +29714,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 @@ -24915,10 +29728,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 @@ -24930,10 +29742,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 @@ -24945,10 +29756,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 @@ -24960,10 +29770,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 @@ -24975,10 +29784,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 @@ -24990,10 +29798,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 @@ -25005,10 +29812,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 @@ -25020,10 +29826,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 @@ -25035,10 +29840,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 @@ -25050,10 +29854,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 @@ -25065,10 +29868,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 @@ -25080,10 +29882,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 @@ -25095,10 +29896,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 @@ -25110,10 +29910,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 @@ -25125,10 +29924,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 @@ -25140,10 +29938,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 @@ -25155,10 +29952,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 @@ -25170,10 +29966,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 @@ -25184,9 +29979,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 @@ -25197,9 +30002,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 @@ -25210,9 +30025,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 @@ -25223,9 +30048,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 @@ -25236,9 +30071,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 @@ -25249,9 +30094,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 @@ -25262,9 +30117,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 @@ -25275,9 +30140,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 @@ -25288,9 +30163,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 @@ -25301,9 +30186,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 @@ -25314,9 +30209,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 @@ -25327,9 +30232,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 @@ -25340,9 +30255,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 @@ -25353,9 +30278,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 @@ -25366,9 +30301,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 @@ -25379,9 +30324,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 @@ -25392,9 +30347,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 @@ -25405,9 +30370,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 @@ -25876,10 +30851,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 @@ -25890,10 +30864,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 @@ -25904,10 +30877,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 @@ -25918,10 +30890,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 @@ -25932,10 +30903,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 @@ -25946,10 +30916,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 @@ -25960,10 +30929,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 @@ -25974,10 +30942,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 @@ -25988,10 +30955,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 @@ -26002,10 +30968,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 @@ -26016,10 +30981,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 @@ -26030,10 +30994,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 @@ -26044,10 +31007,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 @@ -26058,10 +31020,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 @@ -26072,10 +31033,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 @@ -26086,10 +31046,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 @@ -26100,10 +31059,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 @@ -26114,10 +31072,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 @@ -26128,9 +31085,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 @@ -26141,9 +31108,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 @@ -26154,9 +31131,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 @@ -26167,9 +31154,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 @@ -26180,9 +31177,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 @@ -26193,9 +31200,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 @@ -26206,9 +31223,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 @@ -26219,9 +31246,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 @@ -26232,9 +31269,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 @@ -26245,9 +31292,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 @@ -26258,9 +31315,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 @@ -26271,9 +31338,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 @@ -26284,9 +31361,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 @@ -26297,9 +31384,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 @@ -26310,9 +31407,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 @@ -26323,9 +31430,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 @@ -26336,9 +31453,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 @@ -26349,9 +31476,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 @@ -26628,9 +31765,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 @@ -26641,9 +31788,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 @@ -26654,9 +31811,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 @@ -26667,9 +31834,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 @@ -26680,9 +31857,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 @@ -26693,9 +31880,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 @@ -26706,9 +31903,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 @@ -26719,9 +31926,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 @@ -26732,9 +31949,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 @@ -26745,9 +31972,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 @@ -26758,9 +31995,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 @@ -26771,9 +32018,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 @@ -26784,9 +32041,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 @@ -26797,9 +32064,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 @@ -26810,9 +32087,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 @@ -26823,9 +32110,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 @@ -26836,9 +32133,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 @@ -26849,9 +32156,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 @@ -26862,10 +32179,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 @@ -26876,10 +32192,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 @@ -26890,10 +32205,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 @@ -26904,10 +32218,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 @@ -26918,10 +32231,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 @@ -26932,10 +32244,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 @@ -26946,10 +32257,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 @@ -26960,10 +32270,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 @@ -26974,10 +32283,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 @@ -26988,10 +32296,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 @@ -27002,10 +32309,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 @@ -27016,10 +32322,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 @@ -27030,10 +32335,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 @@ -27044,10 +32348,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 @@ -27058,10 +32361,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 @@ -27072,10 +32374,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 @@ -27086,10 +32387,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 @@ -27100,10 +32400,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 @@ -32445,10 +37744,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 @@ -32460,10 +37757,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 @@ -32475,10 +37770,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 @@ -32490,10 +37783,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 @@ -32505,10 +37796,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 @@ -32520,10 +37809,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 @@ -32535,10 +37822,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 @@ -32550,10 +37835,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 @@ -32565,10 +37848,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 @@ -32580,10 +37861,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 @@ -32595,10 +37874,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 @@ -32610,10 +37887,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 @@ -32625,10 +37900,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 @@ -32640,10 +37913,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 @@ -32655,10 +37926,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 @@ -32670,10 +37939,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 @@ -32685,10 +37952,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 @@ -32700,10 +37965,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 @@ -32715,10 +37978,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 @@ -32730,10 +37991,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 @@ -32745,10 +38004,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 @@ -32760,10 +38017,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 @@ -32775,10 +38030,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 @@ -32790,10 +38043,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 @@ -32805,10 +38056,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 @@ -32820,10 +38069,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 @@ -32835,10 +38082,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 @@ -32850,10 +38095,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 @@ -32865,10 +38108,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 @@ -32880,10 +38121,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 @@ -32895,10 +38134,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 @@ -32910,10 +38147,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 @@ -32925,10 +38160,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 @@ -32940,10 +38173,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 @@ -32955,10 +38186,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 @@ -32970,10 +38199,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 @@ -32985,10 +38212,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 @@ -33000,10 +38225,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 @@ -33015,10 +38238,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 @@ -33030,10 +38251,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 @@ -33045,10 +38264,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 @@ -33060,10 +38277,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 @@ -33075,10 +38290,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 @@ -33090,10 +38303,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 @@ -33105,10 +38316,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 @@ -33120,10 +38329,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 @@ -33135,10 +38342,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 @@ -33150,10 +38355,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 @@ -33165,10 +38368,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 @@ -33180,10 +38381,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 @@ -33195,10 +38394,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 @@ -33210,10 +38407,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 @@ -33225,10 +38420,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 @@ -33240,10 +38433,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 @@ -33255,10 +38446,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 @@ -33270,10 +38459,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 @@ -33285,10 +38472,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 @@ -33300,10 +38485,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 @@ -33315,10 +38498,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 @@ -33330,10 +38511,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 @@ -33345,10 +38524,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 @@ -33360,10 +38537,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 @@ -33375,10 +38550,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 @@ -33390,10 +38563,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 @@ -33405,10 +38576,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 @@ -33420,10 +38589,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 @@ -33435,10 +38602,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 @@ -33450,10 +38615,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 @@ -33465,10 +38628,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 @@ -33480,10 +38641,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 @@ -33495,10 +38654,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 @@ -33510,10 +38667,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 @@ -33525,10 +38680,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 @@ -33540,10 +38693,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 @@ -33555,10 +38706,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 @@ -33570,10 +38719,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 @@ -42249,9 +47396,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 @@ -42262,9 +47419,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 @@ -42275,9 +47442,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 @@ -42288,9 +47465,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 @@ -42301,9 +47488,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 @@ -42314,9 +47511,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 @@ -42327,9 +47534,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 @@ -42340,9 +47557,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 @@ -42353,9 +47580,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 @@ -42366,9 +47603,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 @@ -42379,9 +47626,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 @@ -42392,9 +47649,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 @@ -42405,9 +47672,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 @@ -42418,9 +47695,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 @@ -42431,9 +47718,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 @@ -42444,9 +47741,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 @@ -42457,9 +47764,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 @@ -42470,9 +47787,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 @@ -42483,9 +47810,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 @@ -42496,9 +47833,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 @@ -42509,9 +47856,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 @@ -42522,9 +47879,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 @@ -42535,9 +47902,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 @@ -42548,9 +47925,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 @@ -42561,9 +47948,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 @@ -42574,9 +47971,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 @@ -42587,9 +47994,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 @@ -42600,9 +48017,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 @@ -42613,9 +48040,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 @@ -42626,9 +48063,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 @@ -42639,9 +48086,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 @@ -42652,9 +48109,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 @@ -42665,9 +48132,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 @@ -42678,9 +48155,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 @@ -42691,9 +48178,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 @@ -42704,9 +48201,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 @@ -42717,9 +48224,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 @@ -42730,9 +48247,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 @@ -42743,9 +48270,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 @@ -42756,9 +48293,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 @@ -42769,9 +48316,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 @@ -42782,9 +48339,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 @@ -42795,9 +48362,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 @@ -42808,9 +48385,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 @@ -42821,9 +48408,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 @@ -42834,9 +48431,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 @@ -42847,9 +48454,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 @@ -42860,9 +48477,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 @@ -42873,9 +48500,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 @@ -42886,9 +48523,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 @@ -42899,9 +48546,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 @@ -42912,9 +48569,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 @@ -44482,10 +50149,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 @@ -44495,10 +50171,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 @@ -44508,10 +50193,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 @@ -44521,10 +50215,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 @@ -44534,10 +50237,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 @@ -44547,10 +50259,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 @@ -44560,10 +50281,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 @@ -44573,10 +50303,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 @@ -44586,10 +50325,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 @@ -44599,10 +50347,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 @@ -44615,7 +50372,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 @@ -44628,7 +50394,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 @@ -44638,10 +50413,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 @@ -44654,7 +50438,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 @@ -44667,7 +50460,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 @@ -44680,7 +50482,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 @@ -44690,10 +50501,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 @@ -44703,10 +50523,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 @@ -44716,10 +50545,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 @@ -44729,10 +50567,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 @@ -44742,10 +50589,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 @@ -44755,10 +50611,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 @@ -44771,7 +50636,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 @@ -44781,10 +50655,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 @@ -44794,10 +50677,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 @@ -44807,10 +50699,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 @@ -44820,10 +50721,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 @@ -44836,7 +50746,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 @@ -44846,10 +50765,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 @@ -44859,10 +50787,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 @@ -44872,10 +50809,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 @@ -44885,10 +50831,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 @@ -44898,10 +50853,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 @@ -44911,10 +50875,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 @@ -44924,10 +50897,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 @@ -44937,10 +50919,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 @@ -44950,10 +50941,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 @@ -44963,10 +50963,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 @@ -44976,10 +50985,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 @@ -44989,10 +51007,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 @@ -45002,10 +51029,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 @@ -45015,10 +51051,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 @@ -45028,10 +51073,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 @@ -45041,10 +51095,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 @@ -45054,10 +51117,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 @@ -45067,10 +51139,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 @@ -45080,10 +51161,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 @@ -45093,10 +51183,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 @@ -45106,10 +51205,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 @@ -45119,10 +51227,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 @@ -45132,10 +51249,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 @@ -45145,10 +51271,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 @@ -45158,10 +51293,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 @@ -45171,10 +51315,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 @@ -45184,10 +51337,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 @@ -45197,10 +51359,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 @@ -45210,10 +51381,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 @@ -45223,10 +51403,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 @@ -45236,10 +51425,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 @@ -45249,10 +51447,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 @@ -45262,10 +51469,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 @@ -45275,10 +51491,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 @@ -45288,10 +51513,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 @@ -45301,10 +51535,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 @@ -45314,10 +51557,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 @@ -45327,10 +51579,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 @@ -45340,10 +51601,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 @@ -45353,10 +51623,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 @@ -45366,10 +51645,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 @@ -45379,10 +51667,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 @@ -45392,10 +51689,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 @@ -45405,10 +51711,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 @@ -45418,10 +51733,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 @@ -45431,10 +51755,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 @@ -45444,10 +51777,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 @@ -45457,10 +51799,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 @@ -45470,10 +51821,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 @@ -45483,10 +51843,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 @@ -45496,10 +51865,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 @@ -45509,10 +51887,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 @@ -45522,10 +51909,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 @@ -45535,10 +51931,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 @@ -45548,10 +51953,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 @@ -45561,10 +51975,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 @@ -45991,9 +52414,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 @@ -46004,9 +52437,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 @@ -46017,9 +52460,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 @@ -46030,9 +52483,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 @@ -46043,9 +52506,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 @@ -46056,9 +52529,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 @@ -46069,9 +52552,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 @@ -46082,9 +52575,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 @@ -46095,9 +52598,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 @@ -46108,9 +52621,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 @@ -46121,9 +52644,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 @@ -46134,9 +52667,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 @@ -46147,9 +52690,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 @@ -46160,9 +52713,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 @@ -46173,9 +52736,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 @@ -46186,9 +52759,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 @@ -46199,9 +52782,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 @@ -46212,9 +52805,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 @@ -46225,9 +52828,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 @@ -46238,9 +52851,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 @@ -46251,9 +52874,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 @@ -46264,9 +52897,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 @@ -46277,9 +52920,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 @@ -46290,9 +52943,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 @@ -46303,9 +52966,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 @@ -46316,9 +52989,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 @@ -46329,9 +53012,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 @@ -46342,9 +53035,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 @@ -46355,9 +53058,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 @@ -46368,9 +53081,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 @@ -46381,9 +53104,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 @@ -46394,9 +53127,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 @@ -46407,9 +53150,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 @@ -46420,9 +53173,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 @@ -46433,9 +53196,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 @@ -46446,9 +53219,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 @@ -46459,9 +53242,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 @@ -46472,9 +53265,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 @@ -46485,9 +53288,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 @@ -46498,9 +53311,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 @@ -46511,9 +53334,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 @@ -46524,9 +53357,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 @@ -46537,9 +53380,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 @@ -46550,9 +53403,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 @@ -46563,9 +53426,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 @@ -46576,9 +53449,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 @@ -46589,9 +53472,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 @@ -46602,9 +53495,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 @@ -46823,9 +53726,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 @@ -46836,9 +53749,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 @@ -46849,9 +53772,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 @@ -46862,9 +53795,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 @@ -46875,9 +53818,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 @@ -47991,9 +54944,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 @@ -48003,9 +54966,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 @@ -48015,9 +54988,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 @@ -48027,9 +55010,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 @@ -48039,9 +55032,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 @@ -48051,9 +55054,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 @@ -48063,9 +55076,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 @@ -48075,9 +55098,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 @@ -48087,9 +55120,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 @@ -48099,9 +55142,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 @@ -48113,7 +55166,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 @@ -48125,7 +55188,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 @@ -48137,7 +55210,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 @@ -48149,7 +55232,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 @@ -48161,7 +55254,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 @@ -48173,7 +55276,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 @@ -48185,7 +55298,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 @@ -48195,9 +55318,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 @@ -48207,9 +55340,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 @@ -48219,9 +55362,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 @@ -48231,9 +55384,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 @@ -48243,9 +55406,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 @@ -48255,9 +55428,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 @@ -48267,9 +55450,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 @@ -48279,9 +55472,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 @@ -48832,198 +56035,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 4031 - 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 4032 - 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 4033 - 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 4034 - 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 4035 - 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 4036 - 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 4037 - 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 4038 - 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 4039 - 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 4040 - 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 4041 - 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 4042 - 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 4043 - 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 4044 - 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 4045 - 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 4046 - 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 50cd0ca92e..7cc94f9d46 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -1,10 +1,8 @@ (module - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (type $none_=>_none (func)) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) + (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -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 78ee0eb4d2..564f94918e 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 $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_=>_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_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -34,15 +34,6 @@ (data (i32.const 1468) " ") (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,20 +1042,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1083,11 +1068,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 @@ -1097,10 +1085,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 @@ -1167,23 +1157,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 @@ -1193,18 +1235,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 @@ -1212,17 +1254,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 @@ -1233,7 +1275,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1247,10 +1289,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 @@ -1261,14 +1303,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 @@ -1278,26 +1320,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 @@ -1307,72 +1349,35 @@ i32.and i32.store end - local.get $1 - ) - (func $~lib/rt/itcms/__new (result i32) - (local $0 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 $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 $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 @@ -1461,14 +1466,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 @@ -1486,9 +1506,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 84bcba3320..14c652d58d 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -1,9 +1,7 @@ (module + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17596)) (memory $0 1) @@ -19,174 +17,127 @@ (data (i32.const 1192) "\01") (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.const 0 local.get $0 - local.get $1 - f32.eq + select + i32.eqz 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.const 0 - local.get $0 - select - i32.eqz - 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 + local.set $3 + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or 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 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - 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 $4 + local.tee $0 + i32.const 4 + i32.ge_u + select + i32.eqz + if + loop $do-continue|0 local.get $2 + i64.load + local.get $3 + i64.load + 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 +154,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 +177,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 +195,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 +214,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 +230,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 +244,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 6556a67184..099c5f590d 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_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 $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -102,15 +102,6 @@ (data (i32.const 1548) " \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") (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,20 +1101,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1142,11 +1127,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 @@ -1156,10 +1144,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 @@ -1226,23 +1216,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 @@ -1252,18 +1294,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 @@ -1271,15 +1313,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 @@ -1306,22 +1348,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 @@ -1330,32 +1372,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 @@ -1367,70 +1409,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 @@ -1484,7 +1490,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 @@ -1504,43 +1666,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 @@ -1940,7 +2070,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 @@ -1952,19 +2088,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 @@ -1975,14 +2103,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 @@ -1993,10 +2136,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 @@ -2042,10 +2186,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 @@ -2089,10 +2234,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 @@ -2138,10 +2284,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 @@ -2187,10 +2334,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 @@ -2233,10 +2381,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 @@ -2282,10 +2431,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 @@ -2331,10 +2481,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 @@ -2380,10 +2531,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 @@ -2429,16 +2581,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 @@ -2460,16 +2624,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 @@ -2481,16 +2657,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 @@ -2502,16 +2690,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 @@ -2533,10 +2733,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 @@ -2575,10 +2776,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 @@ -2617,10 +2819,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 @@ -2659,10 +2862,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 @@ -3185,17 +3389,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 @@ -3206,10 +3411,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 @@ -3269,10 +3475,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 @@ -3320,11 +3527,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 @@ -3347,11 +3565,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 @@ -3374,11 +3603,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 dcd48b7ddf..f20ac84049 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -14,183 +14,771 @@ (data (i32.const 1048) "\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") (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 + (local $5 i32) + i32.const 8 + local.set $4 + loop $while-continue|0 + local.get $1 + i32.const 3 + i32.and + i32.const 0 + local.get $4 + select + 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|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 + 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 - local.set $4 + 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 + 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 $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 3 + i32.sub + local.set $4 + loop $while-continue|3 + local.get $4 + 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 18 + i32.ge_u + if + local.get $0 + local.get $1 + 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 + 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 $1 + 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 + 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.eq - br_if $~lib/util/memory/memmove|inlined.0 + 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 - 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 + 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 $0 global.set $std/pointer/nextOne + local.get $0 global.get $std/pointer/nextOne - global.get $std/pointer/one i32.ne if i32.const 0 @@ -349,45 +938,224 @@ unreachable end global.get $std/pointer/one - local.set $0 + local.set $1 global.get $std/pointer/two - local.tee $1 + local.tee $0 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 $0 + local.get $1 + i32.sub + i32.const 8 + i32.sub + i32.const -16 + i32.le_u + if + local.get $1 + local.get $0 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.gt_u + if + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $1 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.add + local.get $0 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + i32.add + local.get $0 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.add + local.get $0 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end else - local.get $0 + local.get $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 $1 + local.get $0 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $0 i32.const 4 i32.sub i32.const 0 @@ -509,9 +1277,12 @@ unreachable end global.get $std/pointer/buf + local.tee $3 + i32.const 8 + i32.add f32.const 1.2999999523162842 - f32.store offset=8 - global.get $std/pointer/buf + f32.store + local.get $3 f32.load offset=8 f32.const 1.2999999523162842 f32.ne @@ -548,9 +1319,10 @@ unreachable end global.get $std/pointer/buf + local.tee $0 f32.const 1.399999976158142 f32.store - global.get $std/pointer/buf + local.get $0 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 5d67415ee6..0cd40a1fa6 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1,29 +1,21 @@ (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 (func (param i32) (result 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_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_f64_=>_none (func (param i32 f64))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -59,15 +51,6 @@ (data (i32.const 1676) "H\08\00\00\00\00\00\00B\08\00\00\00\00\00\00H\00\00\00\00\00\00\00B\00\00\00\00\00\00\00\88\08\00\00\00\00\00\00\82\08\00\00\00\00\00\00\88\00\00\00\00\00\00\00\82\00\00\00\00\00\00\00\08\t\00\00\00\00\00\00\02\t\00\00\00\00\00\00\08\01\00\00\00\00\00\00\02\01\00\00\00\00\00\00\08\n\00\00\00\00\00\00\02\n\00\00\00\00\00\00\08\02\00\00\00\00\00\00\02\02\00\00\00\00\00\00\08\19\00\00\00\00\00\00\02\19\00\00\00\00\00\00\08\1a\00\00\00\00\00\00\02\1a") (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,20 +1059,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1104,11 +1085,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 @@ -1118,10 +1102,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 @@ -1142,28 +1128,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 @@ -1260,271 +1246,72 @@ 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.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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.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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 i32.sub i32.const -4 @@ -1637,6 +1424,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 @@ -1654,12 +1445,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 @@ -1675,13 +1466,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 @@ -1695,48 +1487,261 @@ 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.gt_u if - return + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.tee $2 + local.get $6 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $3 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $5 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $6 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + i32.load + local.set $5 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $6 + local.get $3 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $3 + local.get $6 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $6 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $6 + i32.const 4 + i32.add + local.tee $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $6 + 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 @@ -1765,8 +1770,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 @@ -1778,7 +1781,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -1789,24 +1792,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 @@ -1819,75 +1811,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 ) @@ -1903,11 +1882,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 @@ -1931,7 +1921,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 @@ -1942,33 +1932,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 @@ -1976,22 +1996,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 @@ -2009,11 +2035,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 @@ -2050,11 +2144,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 @@ -2070,7 +2164,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.and @@ -2085,912 +2179,1138 @@ 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 + 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 - 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 $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 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $4 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 1616 - i32.const 17 - i32.const 48 - call $~lib/builtins/abort - unreachable - end + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 8 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 8 - i32.gt_u - select - local.get $2 - i32.shl - local.set $1 - local.get $4 - local.set $5 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 local.get $0 - i32.load - local.tee $6 - local.set $4 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $3 - if (result i32) - local.get $5 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - else - local.get $1 - end - local.tee $2 - local.get $4 - 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 $2 - i32.store offset=16 - local.get $4 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $2 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $4 - local.get $2 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_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 $2 - 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 $2 - 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 115 - 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 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 i32.const 1 - call $~lib/array/ensureCapacity + 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.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 - i32.const 0 - call $~lib/array/ensureCapacity - 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 99 - 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) + i32.const 1 + i32.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=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.div_s - i32.lt_s - else - i32.const 0 - end - if + i32.const 1 + 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 $2 - 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 32 - 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 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.const 1 + i32.add + local.tee $0 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 $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 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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.load offset=20 - i32.const 100 - i32.ne + i32.const 8 + i32.and 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 $0 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 $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 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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.load offset=20 - i32.const 100 - i32.ne + i32.const 4 + i32.and if - i32.const 0 - i32.const 1568 - i32.const 18 - 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 - 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 $9 - global.get $~lib/memory/__stack_pointer + 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.load offset=16 - local.tee $11 - 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 + i32.const 1 + i32.and if - i32.const 1456 - i32.const 1616 - i32.const 64 - i32.const 60 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 $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 $7 - 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 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i32.store - loop $for-loop|0 - local.get $6 - local.get $11 - i32.lt_s + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u 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 + i32.const 1456 + i32.const 1616 + i32.const 17 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $7 + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $3 if - local.get $1 - local.get $0 - local.get $4 - i32.load8_s - call $~lib/array/Array#__set - local.get $0 + local.get $9 i32.const 1 - i32.add - local.set $0 + i32.shl + local.tee $1 + i32.const 1073741820 + local.get $1 + i32.const 1073741820 + i32.lt_u + select + local.tee $1 + local.get $6 + local.get $1 + local.get $6 + i32.gt_u + select + local.set $6 end local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 + local.get $7 + local.tee $1 + 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 $6 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $6 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $6 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $6 + i32.gt_u + select + local.set $8 + block $~lib/util/memory/memmove|inlined.0 + local.get $3 + local.tee $2 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $2 + i32.sub + local.get $8 + i32.sub + i32.const 0 + local.get $8 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + local.get $8 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 + local.get $2 + i32.gt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $2 + i32.const 7 + i32.and + if + local.get $8 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + local.get $2 + local.tee $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $8 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $1 + i64.load + i64.store + local.get $8 + i32.const 8 + i32.sub + local.set $8 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $8 + if + local.get $2 + local.tee $4 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.load8_u + i32.store8 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $2 + local.get $8 + i32.add + i32.const 7 + i32.and + if + local.get $8 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.get $8 + i32.const 1 + i32.sub + local.tee $8 + i32.add + local.get $1 + local.get $8 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $8 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $8 + i32.const 8 + i32.sub + local.tee $8 + i32.add + local.get $1 + local.get $8 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $8 + if + local.get $2 + local.get $8 + i32.const 1 + i32.sub + local.tee $8 + i32.add + local.get $1 + local.get $8 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + local.get $3 + local.set $1 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 $9 + i32.add + local.get $6 + local.get $9 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $7 + i32.ne if - local.get $2 + local.get $0 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 + i32.store + local.get $0 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.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link end + local.get $0 + local.get $6 + i32.store offset=8 end - local.get $4 - i32.load offset=20 - local.get $2 - i32.load offset=20 - i32.ne + ) + (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.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 $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 1248 + i32.const 1616 + i32.const 115 + i32.const 22 + call $~lib/builtins/abort + unreachable end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 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.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 $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 + i32.store offset=12 end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 + 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 0 - i32.const 1568 - i32.const 49 - i32.const 3 + i32.const 1248 + i32.const 1616 + i32.const 99 + 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.add - global.set $~lib/memory/__stack_pointer + i32.load8_s ) - (func $~lib/util/hash/HASH (param $0 i32) (result i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.const 255 - i32.and + 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 @@ -2999,36 +3319,147 @@ 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 + 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 + end ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (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/util/hash/HASH - call $~lib/set/Set#find + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 i32.const 0 - i32.ne + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3036,760 +3467,686 @@ (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.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 $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 + 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 $2 - local.get $8 - i32.load8_u - local.tee $7 - i32.store8 - 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 + 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 $2 + local.set $0 + br $for-loop|1 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 + local.get $1 + 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 10 i32.const 3 - i32.mul - i32.const 4 - i32.div_s + 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 (result i32) + if + local.get $1 local.get $0 - i32.load offset=4 - else + 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.load offset=4 - i32.const 1 - i32.shl i32.const 1 - i32.or + i32.add + local.set $0 + br $for-loop|3 end - call $~lib/set/Set#rehash end - local.get $0 + 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 $9 + 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.get $0 - local.get $0 + local.set $10 + local.get $1 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 $11 + 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 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 + i64.const 0 + i64.store 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 + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 + i32.const 0 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 99 - 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.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.get $2 i32.const 0 - end - if - local.get $0 + call $~lib/rt/itcms/__link 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 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u + 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 - local.get $2 - local.get $1 - call $~lib/set/Set#has + i32.const 1456 + i32.const 1616 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + 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 $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 $8 + 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 $11 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $10 + 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 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $9 + 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 - local.get $1 - call $~lib/set/Set#add - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + 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 $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 $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 $0 + i32.load offset=20 local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u + i32.load offset=20 + 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 - 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 0 + i32.const 1568 + i32.const 27 + 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 18 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - 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 $9 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $11 - local.set $4 + 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 - 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 + i32.const 1836 + i32.lt_s if - i32.const 1456 - i32.const 1616 - i32.const 64 - 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 $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 $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 $7 - i32.store offset=8 + local.tee $2 + i64.const 0 + i64.store + local.get $2 local.get $1 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 i32.store - loop $for-loop|0 - local.get $6 - local.get $11 - i32.lt_s + 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 $9 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.tee $4 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $1 - local.get $0 - local.get $4 + local.get $2 + local.get $7 i32.load8_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 + 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 - 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 - 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 $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 - 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 255 - i32.and - 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|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 - 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 + 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 $3 - i32.const 1 + local.get $7 + i32.const 8 i32.add - local.set $3 - br $for-loop|8 + local.set $7 + 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 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/set/Set#clear - local.get $2 + 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 - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/hash/HASH (param $0 i32) (result 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.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.load + local.get $1 + i32.const 255 + i32.and i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 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#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 + local.tee $4 local.get $0 i32.load offset=4 i32.and @@ -3797,177 +4154,45 @@ i32.shl i32.add i32.load - local.set $0 - loop $while-continue|0 + 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 - 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 - 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 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 - local.get $2 - local.get $8 - i32.load16_s - local.tee $7 - i32.store16 - 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 - 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 + i32.load offset=12 + i32.eq if local.get $0 local.get $0 @@ -3990,24 +4215,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.store8 local.get $0 local.get $0 i32.load offset=20 @@ -4017,7 +4242,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.and @@ -4032,56 +4257,7 @@ i32.store 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 115 - 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 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 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 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -4097,53 +4273,118 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 1 - i32.shl i32.add - i32.load16_s + i32.load8_u ) - (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 - 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 + i32.load local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u + local.get $1 local.tee $2 - i32.const 1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - i32.const 4 - local.get $0 - i32.load offset=20 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $1 local.get $1 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 + 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 @@ -4158,10 +4399,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) @@ -4178,769 +4419,1237 @@ 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 - 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 16 - i32.shl - i32.const 16 - 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 - 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 $9 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $11 - 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 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 $4 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 $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 $7 - 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 $11 - i32.lt_s - if - local.get $9 - local.get $6 + i32.const 0 + i32.const 1568 + i32.const 10 i32.const 3 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 + 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.eqz + i32.const 100 + i32.lt_u if + 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#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 - local.get $4 - i32.load16_s - call $~lib/array/Array#__set + 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 $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 $2 + 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 - 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 18 + 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 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $9 + i32.const 4 + 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 $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 - end - end - local.get $2 - i32.load offset=20 - i32.const 50 - i32.ne - if + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $7 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.store + local.get $2 + i32.load offset=8 + local.set $10 + local.get $2 + i32.load offset=16 + local.tee $11 + 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 $2 - local.get $3 - call $~lib/set/Set#has + i32.const 1456 + i32.const 1616 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + 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 $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 $8 + 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 + local.get $11 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $10 + 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 - local.get $2 - local.get $3 - call $~lib/set/Set#add - local.get $2 + end + local.get $1 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $9 + 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 - 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 41 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 + 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 $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 $2 - local.get $3 - call $~lib/set/Set#delete - local.get $2 + 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 - 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 $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 - ) - (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 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u if local.get $2 - local.get $8 - i32.load16_u - local.tee $7 - i32.store16 + i32.load 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 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 - local.tee $7 i32.load - i32.store offset=4 - local.get $7 + 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 - 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 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/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.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 $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.store16 - local.get $0 - local.get $0 + 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 + end + 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 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 + if + 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 + 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 + 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 - i32.store + 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/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 99 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.load local.get $0 i32.load offset=4 local.get $1 - i32.const 1 + i32.const 16 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 $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.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 - i32.const 1 + 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 - 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.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 - 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) @@ -4948,531 +5657,4220 @@ (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.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 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + 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 - loop $for-loop|1 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u + 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 $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 + local.get $7 + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 1568 + local.get $2 + local.get $7 + i32.load16_s + local.tee $8 + i32.store16 + local.get $2 + local.get $6 + 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 $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.add + local.set $2 end - local.get $1 - i32.const 1 + local.get $7 + i32.const 8 i32.add - local.set $1 - br $for-loop|1 + local.set $7 + br $while-continue|0 end end - local.get $2 + 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.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 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 + 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 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 - 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 + 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 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 end + i32.const 0 + local.set $2 end local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 18 + 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 + i32.store16 + 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 - 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 $9 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $11 - 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 10 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/set/Set#set:buckets + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $1 - i32.const 0 - i32.store offset=4 + 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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 local.get $1 - i32.const 0 - i32.store offset=8 + 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 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 536870910 - i32.gt_u + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 1456 + i32.const 1248 i32.const 1616 - i32.const 64 - i32.const 60 + i32.const 99 + i32.const 42 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 $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 $7 - 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 $11 - 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.load16_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 - call $~lib/array/Array#set:length - 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.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 $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 - 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 - 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 - 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 - 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 - 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 - 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.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load16_s ) - (func $~lib/util/hash/HASH (param $0 i32) (result 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 374761397 + i32.const 374761395 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/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 $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 + 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 + 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 $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.const 16 + 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 16 + i32.shl + i32.const 16 + 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 $9 + 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 $10 + local.get $1 + i32.load offset=16 + local.tee $11 + 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 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 $4 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 1 + 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 $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 $8 + 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 $11 + i32.lt_s + if + local.get $10 + 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.load16_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 1 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $9 + 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 16 + i32.shl + i32.const 16 + 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 16 + i32.shl + i32.const 16 + 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.load16_u + local.tee $8 + i32.store16 + local.get $2 + local.get $6 + 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 $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 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 + 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.store16 + 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 99 + i32.const 42 + 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 $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 + 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 + 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 + 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|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.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 $9 + 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 $10 + local.get $2 + i32.load offset=16 + local.tee $11 + 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 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 $4 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 1 + 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 $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 $8 + 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 + local.get $11 + i32.lt_s + if + local.get $10 + 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.load16_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 1 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $9 + 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 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.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.load16_u + local.get $6 + i32.const 65535 + 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 + 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 + if + 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 + 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 + i32.const 50 + i32.lt_u + if + 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 + 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 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.load + local.tee $8 + i32.store + local.get $2 + local.get $6 + 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 $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 -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 + 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.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 + ) + (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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 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 1616 + i32.const 99 + 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/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 + 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 + 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 $9 + 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 $10 + local.get $2 + i32.load offset=16 + local.tee $11 + 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 12 + 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 1616 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 2 + 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 $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 $8 + 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|01 + local.get $6 + local.get $11 + i32.lt_s + if + local.get $10 + 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.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 $6 + br $for-loop|01 + end + end + local.get $1 + local.get $0 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $9 + 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 $6 + 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 $7 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $0 + i32.load + 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|2 + 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 + 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 + 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 + 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 + 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 - 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/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 + 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) @@ -5484,11 +9882,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 @@ -5512,7 +9921,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 @@ -5523,33 +9932,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 @@ -5557,22 +9992,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 @@ -5585,16 +10026,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 @@ -5624,18 +10127,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 @@ -5651,7 +10154,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.and @@ -5666,35 +10169,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 115 - 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 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 1248 + i32.const 1616 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable end local.get $0 i32.load offset=4 @@ -5702,48 +10188,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 - i32.const 0 - call $~lib/array/ensureCapacity + 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 99 - 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 $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 $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.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 @@ -5779,1241 +10296,1621 @@ 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 $9 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 $7 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 $10 + local.get $2 + i32.load offset=16 + local.tee $11 + 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 - 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 $4 + 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 64 + 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 $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $8 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 $9 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $11 - 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 $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 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - 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 $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 $7 - 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|01 - local.get $6 - local.get $11 - i32.lt_s - if - local.get $9 + 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 $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 $8 + 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|01 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 $11 + i32.lt_s + if + local.get $10 + 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.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 $6 + br $for-loop|01 + end + end + local.get $1 + local.get $0 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $9 + 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 $6 + 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 $7 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + local.get $0 + i32.load + 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|2 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - 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 99 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.load local.get $0 i32.load offset=4 local.get $1 - i32.const 2 - i32.shl + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 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 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul 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 + 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 - 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 - 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.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=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 $9 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $11 - 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 + 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 $4 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select + i32.const 1 + i32.add + local.tee $2 i32.const 2 i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor 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 $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 $7 - i32.store offset=8 - local.get $1 - local.get $4 - i32.store offset=12 + 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 $6 - local.get $11 - 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 $9 - local.get $6 - 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 $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 - 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 + ) + (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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add local.get $2 - 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 99 + 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 @@ -7023,7 +11920,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $0 + local.get $1 i64.const 32 i64.shr_u i32.wrap_i64 @@ -7034,1646 +11931,1995 @@ 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 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=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 + 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=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 $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=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 - i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + (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 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $0 local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 i32.const 0 - i32.ne + i32.store offset=16 + local.get $0 + i32.const 0 + 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 - 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_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 - local.get $9 - i32.load offset=8 - 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 + 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 $9 - i64.load - local.tee $5 - i64.store + 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 $8 - local.get $5 - call $~lib/util/hash/HASH local.get $1 - i32.and - i32.const 2 + 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 $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 $8 + i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $11 + local.get $2 + i32.load offset=16 + local.tee $12 + local.set $4 + local.get $8 + 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 $4 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 3 + i32.shl + local.tee $9 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + local.get $9 + call $~lib/memory/memory.fill + local.get $3 + local.get $5 + i32.store + local.get $3 + local.get $5 + call $~lib/rt/itcms/__link + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $9 + 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 $8 + local.get $3 + i32.store + loop $for-loop|01 + local.get $7 + local.get $12 + i32.lt_s + if + local.get $11 + local.get $7 + 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 $7 + i32.const 1 i32.add - local.set $2 + local.set $7 + 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 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $10 + 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 $6 + 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 $6 + 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 $6 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $6 i32.const 1 - i32.or + i32.add + local.set $6 + 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 1248 - i32.const 1616 - i32.const 115 - i32.const 22 + i32.const 0 + i32.const 1568 + i32.const 35 + 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 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 + 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 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 $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 - i32.const 0 - call $~lib/array/ensureCapacity - 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 99 - 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 + end 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 $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $12 - local.set $4 + 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 $4 - i32.const 134217727 - i32.gt_u + i32.const 1836 + i32.lt_s if - i32.const 1456 - i32.const 1616 - i32.const 64 - 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 $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select + 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 $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - local.get $6 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $6 - call $~lib/set/Set#set:buckets - local.get $3 - local.get $6 + 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 $8 - i32.store offset=8 - local.get $3 - local.get $4 - 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 $7 - local.get $12 - i32.lt_s + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - local.get $10 - local.get $7 - 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 $7 - i32.const 1 + local.get $8 + i32.const 16 i32.add - local.set $7 - 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 - call $~lib/array/Array#set:length + 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 + ) + (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 - i32.store offset=8 - loop $for-loop|2 - local.get $5 - local.get $3 - i32.load offset=12 - i32.lt_s - if + 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 - 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 99 + 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 - 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 + local.set $2 end local.get $2 - call $~lib/set/Set#clear - local.get $2 - i32.load offset=20 + i32.eqz if - i32.const 0 - i32.const 1568 - i32.const 49 - 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 $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load 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.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 $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 $8 + i32.const 0 + i32.store + local.get $2 + i32.load offset=8 + local.set $11 + local.get $2 + i32.load offset=16 + local.tee $12 + local.set $4 + local.get $8 + 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 $4 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 3 + i32.shl + local.tee $9 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + local.get $9 + call $~lib/memory/memory.fill + local.get $3 + local.get $5 + i32.store + local.get $3 + local.get $5 + call $~lib/rt/itcms/__link + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $9 + 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 $8 + local.get $3 + i32.store + loop $for-loop|01 + local.get $7 + local.get $12 + 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 $11 + local.get $7 + 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 $7 + i32.const 1 i32.add - local.set $2 + local.set $7 + 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 + i32.const 0 + call $~lib/array/ensureCapacity + 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 $10 + 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 $6 + 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 $6 + 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 $6 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $6 i32.const 1 - i32.or + i32.add + local.set $6 + 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 99 - 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.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 - 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 + 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 $12 - 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 + 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 - 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 $4 - i32.const 134217727 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select + local.get $2 i32.const 3 i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new + 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 $6 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $6 - call $~lib/set/Set#set:buckets - local.get $3 - local.get $6 - 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 + 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 $7 - local.get $12 - i32.lt_s + local.set $2 + loop $while-continue|0 + local.get $5 + local.get $8 + i32.ne if - local.get $10 - local.get $7 - 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 $7 - i32.const 1 + local.get $8 + i32.const 8 i32.add - local.set $7 - 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 local.get $0 - call $~lib/array/Array#set:length + 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 99 + 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 @@ -8683,839 +13929,1288 @@ 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 - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) + 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 $1 - local.get $1 - call $~lib/util/hash/HASH - call $~lib/set/Set#find - i32.const 0 - i32.ne + 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#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 - i32.ne - if - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + 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 - 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#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 - i32.store + call $~lib/set/Set#add + local.get $3 + i32.load + local.get $3 + i32.load offset=4 local.get $2 - i32.const 8 + 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 - 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 10 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 + 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 - else + 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#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 + call $~lib/set/Set#add + local.get $3 + i32.load + local.get $3 i32.load offset=4 - i32.const 1 + 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.const 1 - i32.or + 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 + f32.const 1 + f32.add + local.set $2 + br $for-loop|1 end - call $~lib/set/Set#rehash end - local.get $0 + local.get $3 + 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 $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 $8 + i32.const 0 + i32.store + local.get $3 i32.load offset=8 - local.get $0 - local.get $0 + local.set $11 + local.get $3 i32.load offset=16 + local.tee $12 + local.set $0 + local.get $8 + 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 $4 - i32.const 1 - i32.add - i32.store offset=16 + i64.const 0 + i64.store 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.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 - 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 99 - 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 + 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 $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.const 268435455 + 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 + i32.const 1456 + i32.const 1616 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + local.get $0 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $9 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + local.get $9 + call $~lib/memory/memory.fill + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + local.get $9 + i32.store offset=8 + local.get $4 + 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 $8 + local.get $4 + i32.store + loop $for-loop|01 + local.get $6 + local.get $12 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $11 + local.get $6 + 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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + 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 $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|01 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 + local.get $4 + local.get $1 + i32.const 2 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 + call $~lib/array/ensureCapacity + local.get $4 local.get $1 - f32.const 100 - f32.lt - if - local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + 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 $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 $7 + local.get $4 + i32.load offset=12 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $7 + 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 $6 + 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 $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 $1 + local.get $4 + local.get $7 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|2 end + end + local.get $1 + 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#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 $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $12 - 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 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 $4 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - local.get $6 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $6 - call $~lib/set/Set#set:buckets - local.get $3 - local.get $6 - 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 $7 - local.get $12 - i32.lt_s + local.get $3 + i32.load offset=20 + i32.const 50 + i32.ne if - local.get $10 - local.get $7 + 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 115 - 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 - i32.const 1 - call $~lib/array/ensureCapacity - 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 $7 - i32.const 1 - i32.add - local.set $7 - 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 @@ -9525,7 +15220,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $2 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -9536,94 +15231,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 @@ -9674,17 +15368,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 @@ -9701,13 +15435,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 @@ -9723,13 +15463,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 @@ -9766,11 +15583,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 @@ -9786,7 +15603,7 @@ local.get $2 local.get $0 i32.load - local.get $3 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -9825,12 +15642,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 @@ -9884,7 +15777,7 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 f64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9895,473 +15788,507 @@ (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 $4 + 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 $11 + i32.load offset=8 + local.set $3 + local.get $11 + i32.load offset=16 + local.tee $2 + local.set $1 + 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 $10 + i64.const 0 + i64.store + local.get $10 + 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 $1 - f64.const 100 - f64.lt + 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 64 + 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 $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 50 - local.set $1 - loop $for-loop|1 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/memory/memory.fill + local.get $10 + local.get $9 + i32.store + local.get $10 + local.get $9 + call $~lib/rt/itcms/__link + local.get $10 + local.get $9 + i32.store offset=4 + local.get $10 + local.get $5 + i32.store offset=8 + local.get $10 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 + 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 $10 + i32.store + loop $for-loop|01 local.get $2 - local.get $1 - call $~lib/set/Set#has - i32.eqz + 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 $3 + 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 115 + 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 + i32.const 1 + call $~lib/array/ensureCapacity + 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 $10 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load offset=16 - local.tee $12 - 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 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 $4 - i32.const 134217727 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 8 - local.get $4 - i32.const 8 - i32.gt_u - select - i32.const 3 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - local.get $6 - local.get $8 - call $~lib/memory/memory.fill - local.get $3 - local.get $6 - call $~lib/set/Set#set:buckets - local.get $3 - local.get $6 - 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 $7 - local.get $12 - i32.lt_s - if + i32.const 0 + call $~lib/array/ensureCapacity + 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 $4 + 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 - local.get $7 - i32.const 4 - i32.shl - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + 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 115 - 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 - i32.const 1 - call $~lib/array/ensureCapacity - 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 $7 - i32.const 1 - i32.add - local.set $7 - 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 @@ -10412,14 +16339,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 @@ -10465,26 +16407,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 @@ -10516,15 +16455,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 @@ -10533,14 +16484,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 @@ -10558,15 +16517,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 @@ -10575,14 +16546,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 @@ -10600,15 +16579,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 @@ -10617,14 +16608,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 @@ -10642,15 +16641,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 @@ -10659,14 +16670,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 @@ -10684,15 +16703,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 @@ -10701,14 +16732,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 @@ -10726,15 +16765,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 @@ -10743,14 +16794,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 @@ -10768,15 +16827,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 @@ -10785,14 +16856,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 @@ -10810,15 +16889,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 @@ -10827,14 +16918,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 @@ -10852,15 +16951,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 @@ -10869,14 +16980,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 @@ -10894,15 +17013,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 @@ -10911,14 +17042,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 12914f3480..85e597f65d 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1,11 +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_=>_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 $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i64 (func (param i32) (result i64))) (type $i32_=>_f32 (func (param i32) (result f32))) @@ -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,20 +1097,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1134,11 +1123,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 @@ -1148,10 +1140,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 @@ -1172,28 +1166,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 @@ -1290,271 +1284,72 @@ 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.gt_u - if - i32.const 1632 - i32.const 1904 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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.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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 i32.sub i32.const -4 @@ -1667,6 +1462,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 @@ -1684,12 +1483,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 @@ -1705,13 +1504,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 @@ -1725,214 +1525,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.gt_u + if + i32.const 1632 + i32.const 1904 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end local.tee $2 - local.get $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 $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 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 + 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.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 $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.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 - 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.set $1 local.get $0 + i32.const 16 i32.add - local.get $1 - local.get $4 - 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/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) @@ -1941,9 +2538,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 $4 + local.tee $8 local.get $1 i32.shr_u i32.const 1 @@ -1962,35 +2561,33 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - local.tee $6 - local.set $2 block $__inlined_func$~lib/rt/itcms/__renew - local.get $4 + local.get $8 i32.const 1 i32.shl - local.tee $3 + local.tee $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.const 8 local.get $1 i32.shl local.tee $1 local.get $1 - local.get $3 + local.get $2 i32.lt_u select local.tee $7 - local.tee $3 - local.get $6 + local.get $0 + i32.load + local.tee $9 + local.tee $1 i32.const 20 i32.sub - local.tee $5 + local.tee $2 i32.load i32.const -4 i32.and @@ -1998,38 +2595,223 @@ i32.sub i32.le_u if - local.get $5 - local.get $3 - i32.store offset=16 local.get $2 - local.set $1 + local.get $7 + i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $3 - local.get $5 + local.get $7 + local.get $2 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $1 + local.set $5 + local.get $7 local.get $2 - local.get $3 - local.get $5 i32.load offset=16 local.tee $2 local.get $2 - local.get $3 + local.get $7 i32.gt_u select - call $~lib/memory/memory.copy + local.set $6 + block $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $5 + local.tee $2 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $2 + i32.sub + local.get $6 + i32.sub + i32.const 0 + local.get $6 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + local.get $6 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 + local.get $2 + i32.gt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $2 + i32.const 7 + i32.and + if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $2 + local.tee $3 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $6 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $1 + i64.load + i64.store + local.get $6 + i32.const 8 + i32.sub + local.set $6 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $6 + if + local.get $2 + local.tee $3 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + 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 $4 + local.get $8 i32.add local.get $7 - local.get $4 + local.get $8 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $6 + local.get $9 i32.ne if local.get $0 @@ -2054,7 +2836,7 @@ local.get $1 i32.const 20 i32.sub - local.tee $1 + local.tee $2 i32.load offset=4 i32.const 3 i32.and @@ -2066,26 +2848,24 @@ i32.load offset=4 i32.const 3 i32.and - local.tee $2 - local.set $3 - local.get $2 + local.tee $1 global.get $~lib/rt/itcms/white i32.eqz i32.eq if - local.get $1 + 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 $3 + local.get $1 i32.const 3 i32.eq select if - local.get $1 + local.get $2 call $~lib/rt/itcms/Object#makeGray end end @@ -2195,6 +2975,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 @@ -2211,9 +2992,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 @@ -2266,14 +3048,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 61a729a38a..e28570b093 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_i32_=>_none (func (param i32 i32 i32))) (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 $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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -21,7 +21,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)) (memory $0 1) (data (i32.const 1036) "\1c") @@ -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,20 +1187,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1225,11 +1213,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 @@ -1239,10 +1230,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 @@ -1263,28 +1256,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 @@ -1381,271 +1374,72 @@ 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.gt_u - if - i32.const 1344 - i32.const 1616 - i32.const 458 - i32.const 29 - 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 - i32.const 4 + 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 + local.tee $2 + i32.const 1 i32.sub + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 local.get $2 - i32.clz + i32.const 3 i32.sub - i32.shl - i32.const 1 + i32.const 0 + i32.store8 + 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 4 + i32.sub + 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.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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - 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 4 - i32.sub - 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.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 local.get $2 i32.sub i32.const -4 @@ -1758,6 +1552,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 @@ -1775,12 +1573,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 @@ -1796,13 +1594,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 @@ -1816,2496 +1615,3894 @@ 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.gt_u + if + i32.const 1344 + i32.const 1616 + i32.const 458 + i32.const 29 + 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 $6 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $3 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $5 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $6 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + i32.load + local.set $5 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $6 + local.get $3 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $3 + local.get $6 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $6 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $6 + i32.const 4 + i32.add + local.tee $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $6 + local.get $1 + i32.store offset=12 + local.get $6 + local.get $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/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 - 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.const 2 i32.add + local.set $0 local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - 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 - 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 - i32.and - local.tee $3 - local.set $4 - local.get $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $4 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - 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/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 + local.tee $3 + i32.const 2 i32.add local.set $1 - local.get $0 - i32.const 4 + local.get $4 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 3 i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 + 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 - 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 + i32.load + local.set $5 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 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.set $0 local.get $1 + local.tee $3 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 - 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.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 $3 + i32.load8_u offset=1 + i32.store8 offset=1 local.get $2 - i32.const 1 - i32.add + i32.const 2 + i32.sub local.set $2 - br $while-continue|0 + 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 - 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 - local.get $2 - local.get $3 - i32.lt_s - if local.get $1 + i32.load + local.set $5 local.get $0 - local.get $2 - i32.const 2 - i32.shl + local.tee $3 + i32.const 1 i32.add - i32.load - i32.eq - if - local.get $2 - return - end - local.get $2 + 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 + 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/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.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 + 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 $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/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.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 i32.const 1 + i32.add + local.tee $0 + local.get $1 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 $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 - 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.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 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 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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 - 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 + local.get $2 + i32.const 8 + i32.and if - i32.const 0 - i32.const 1216 - i32.const 24 + 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 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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 - 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 + local.get $2 + i32.const 4 + i32.and if - i32.const 0 - i32.const 1216 - i32.const 25 + 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 - 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 + local.get $2 i32.const 2 - i32.shr_u - i32.const 3 - i32.ne + i32.and if - i32.const 0 - i32.const 1216 - i32.const 26 - 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 - 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 + local.get $2 i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 8 - i32.ne + i32.and if - i32.const 0 - i32.const 1216 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.load8_u + i32.store8 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 + ) + (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 1216 - i32.const 30 + local.get $4 i32.const 1 - call $~lib/builtins/abort - unreachable - 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 - 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 - if - i32.const 0 - i32.const 1216 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 + 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.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.lt_s + i32.lt_u if local.get $1 + i32.const 7 + i32.and local.get $0 - call $~lib/staticarray/StaticArray#__get + i32.const 7 + i32.and + i32.eq if - i32.const 0 - i32.const 1216 - i32.const 46 - i32.const 5 - 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.const 7 + i32.and local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|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 - 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 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) 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.eqz + if + return + end + local.get $0 + i32.eqz if i32.const 0 - i32.const 1216 - i32.const 56 - i32.const 3 + i32.const 1408 + i32.const 294 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|1 + 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 - local.get $1 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/staticarray/StaticArray#__get + i32.const 20 + i32.sub + local.tee $0 + 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 $0 local.get $1 - i32.load offset=12 - i32.ge_u - if - i32.const 1088 - i32.const 1776 - i32.const 99 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.ne + local.get $2 + select + 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 - i32.const 0 - i32.const 1216 - i32.const 58 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/itcms/Object#makeGray 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/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + local.get $1 + i32.eq if - i32.const 0 - i32.const 1216 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + return 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 + i32.const 0 local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray.concat - local.tee $1 - i32.store offset=8 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne + select + i32.eqz if i32.const 0 - i32.const 1216 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable + return 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 local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray.concat - local.tee $1 - i32.store offset=8 - local.get $1 i32.const 20 i32.sub i32.load offset=16 - i32.const 2 + i32.const 1 i32.shr_u - local.get $0 + 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 71 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.set $2 + local.get $1 + local.set $3 + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.const 1 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + select + i32.eqz + if + 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 + 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 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 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.get $1 - i32.const 20 + i32.const 4 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - 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 78 - i32.const 3 + 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 - local.set $0 - loop $for-loop|2 + i32.store + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf + local.get $2 local.get $0 - local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - i32.lt_s + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select if - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 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.lt_s + if + local.get $2 local.get $3 - i32.store + 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 $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 + i32.lt_s if - i32.const 0 - i32.const 1216 - i32.const 81 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|2 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 - 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 $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - 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 - 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 $1 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 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer 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 + i32.const 3188 + i32.lt_s if - i32.const 0 - i32.const 1216 - i32.const 100 - i32.const 3 + 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.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 - 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 103 - 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.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 $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 - 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.const 0 - local.get $3 - select + 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 - 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 + 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.get $2 - select - i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#includes - drop - loop $while-continue|00 - local.get $1 - local.get $2 - i32.lt_s - if - i32.const 1 - i32.const 1 - local.get $0 - local.get $1 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $3 i32.const 2 i32.shl i32.add - 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.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 $1 - br $while-continue|00 + local.set $3 + br $for-loop|1 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 + 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 - 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 + ) + (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 7 - i32.const 0 - 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 139 + 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 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 - end - local.get $0 - i32.const 2 - i32.const -1 - call $~lib/staticarray/StaticArray#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 141 + 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 - 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 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 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 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 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 + 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 149 + 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 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 - i32.const 0 - i32.const 1216 - i32.const 150 + 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 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.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 99 + 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.const 0 + local.get $3 + select + i32.eqz + 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.const 0 + local.get $3 + select + i32.eqz + 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.const 0 + local.get $1 + select + i32.eqz + 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.const 0 + local.get $1 + select + i32.eqz + 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) @@ -4313,11 +5510,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 @@ -4331,39 +5539,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 @@ -4381,11 +5612,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 @@ -4414,26 +5656,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 @@ -4457,7 +5709,7 @@ i32.store local.get $2 local.get $0 - local.get $4 + local.get $3 i32.const 2 i32.shl local.tee $0 @@ -4466,7 +5718,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 @@ -4483,7 +5735,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 @@ -4597,7 +5859,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 @@ -4653,7 +5925,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 4f452ab417..3511d4eab8 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 (func (param 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_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) @@ -23,7 +23,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 35764)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37476)) (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1048) "\01") @@ -39,453 +39,449 @@ (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") (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,20 +1490,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1524,11 +1516,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 @@ -1538,10 +1533,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 @@ -1562,28 +1559,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 @@ -1680,11 +1677,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.gt_u if @@ -1695,50 +1761,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 @@ -1746,18 +1816,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 @@ -1765,18 +1835,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 @@ -1788,7 +1858,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1801,12 +1871,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 @@ -1820,54 +1890,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 @@ -1877,143 +1947,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -2021,7 +2130,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -2054,102 +2163,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) @@ -2162,16 +2176,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 @@ -2186,7 +2200,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 4984 + i32.const 5112 i32.add i32.load i32.mul @@ -2197,7 +2211,7 @@ i32.add i32.const 2 i32.shl - i32.const 4996 + i32.const 5124 i32.add i32.load local.tee $2 @@ -2231,7 +2245,7 @@ i32.add i32.const 1 i32.shl - i32.const 6468 + i32.const 6596 i32.add i32.load8_u local.tee $6 @@ -2242,12 +2256,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 @@ -2290,17 +2304,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) @@ -2312,6 +3082,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 @@ -2539,7 +3327,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 @@ -2553,15 +3341,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -2569,20 +3360,20 @@ i32.eqz 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 @@ -2595,33 +3386,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 @@ -2629,93 +3420,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) @@ -2725,12 +3532,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 @@ -2738,9 +3555,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 @@ -2748,9 +3564,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 @@ -2758,20 +3574,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 @@ -2782,7 +3598,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 @@ -2816,19 +3632,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) @@ -2844,7 +3647,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 @@ -3121,16 +3934,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 @@ -3159,63 +3965,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 @@ -3226,813 +4061,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 + 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 @@ -4042,21 +4810,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 @@ -4066,21 +4835,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 @@ -4090,21 +4860,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 @@ -4114,21 +4885,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 @@ -4138,21 +4910,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 @@ -4162,21 +4935,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 @@ -4186,21 +4960,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 @@ -4210,21 +4985,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 @@ -4234,21 +5010,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 @@ -4258,21 +5035,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 @@ -4282,21 +5060,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 @@ -4306,21 +5085,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 @@ -4330,21 +5110,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 @@ -4354,21 +5135,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 @@ -4378,21 +5160,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 @@ -4402,21 +5185,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 @@ -4426,21 +5210,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 @@ -4450,21 +5235,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 @@ -4474,725 +5260,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 $7 + local.get $9 i32.const 16864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6896 + 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 $9 + i32.const 17120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + 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 @@ -5205,9 +6205,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 @@ -5220,14 +6263,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 @@ -5240,9 +6369,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 @@ -5255,12 +6427,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 @@ -5275,7 +6447,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 @@ -5290,36 +6462,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 @@ -5330,11 +6502,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 @@ -5342,22 +6514,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 @@ -5366,22 +6538,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 @@ -5395,11 +6567,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 @@ -5407,22 +6579,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 @@ -5431,22 +6603,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 @@ -5455,10 +6627,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 @@ -5482,7 +6654,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 @@ -5559,7 +6741,7 @@ i32.const 1023 i32.and local.get $1 - local.tee $3 + local.tee $2 i32.const 1023 i32.and i32.const 10 @@ -5576,7 +6758,7 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $2 local.get $7 i32.const 16 i32.shl @@ -5623,10 +6805,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 @@ -5636,19 +6818,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 @@ -5660,7 +6844,7 @@ i32.and i32.const 56320 i32.eq - local.get $3 + local.get $1 i32.const 2 i32.sub i32.const 0 @@ -5671,7 +6855,7 @@ i32.const 1023 i32.and local.get $0 - local.get $3 + local.get $1 i32.const 2 i32.sub i32.const 1 @@ -5686,7 +6870,7 @@ i32.add i32.const 65536 i32.add - local.set $1 + local.set $2 local.get $10 i32.const 64512 i32.and @@ -5702,28 +6886,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 @@ -5731,28 +6955,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 @@ -5761,14 +6985,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 @@ -5779,14 +7003,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 @@ -5811,9 +7035,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 @@ -5823,23 +7067,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 @@ -5872,7 +7136,7 @@ call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.tee $3 + local.tee $2 i32.const 65536 i32.lt_u if @@ -5881,7 +7145,7 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $2 i32.store16 else local.get $6 @@ -5889,15 +7153,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 @@ -5922,14 +7186,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 @@ -5960,11 +7219,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 + local.tee $1 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2 local.get $0 i32.const 65535 @@ -5982,7 +7252,7 @@ i32.gt_u if i32.const 0 - i32.const 15344 + i32.const 15600 i32.const 39 i32.const 7 call $~lib/builtins/abort @@ -6022,11 +7292,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 @@ -6037,7 +7318,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 18944 + i32.const 19200 return end i64.const 0 @@ -6055,161 +7336,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 @@ -6217,6 +7554,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 bba1614bc2..80f0a35785 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))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -60,15 +60,6 @@ (data (i32.const 22352) "\03\00\00\00 \00\00\00\00\00\00\00 ") (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,20 +1064,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1105,11 +1090,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 @@ -1119,10 +1107,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 @@ -1143,28 +1133,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 @@ -1261,11 +1251,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.gt_u if @@ -1276,50 +1335,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 @@ -1327,18 +1390,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 @@ -1346,18 +1409,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 @@ -1369,7 +1432,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1382,12 +1445,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 @@ -1401,54 +1464,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 @@ -1458,143 +1521,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1602,7 +1704,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1635,1577 +1737,2389 @@ 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 - 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 + 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/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq + 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.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 + local.set $2 + br $while-continue|5 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 $2 + i32.const 16 + i32.and + if 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 $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 $1 + i32.load8_u + i32.store8 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 - if + i32.const 1 + i32.add + local.tee $0 local.get $1 - i32.const 0 + i32.const 1 + i32.add + local.tee $1 + 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 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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=3 - i32.const 220 - i32.ne + local.get $2 + i32.const 8 + i32.and if - i32.const 0 - i32.const 1088 - i32.const 19 - 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=4 - i32.const 104 - i32.ne + local.get $2 + i32.const 4 + i32.and 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 - ) - (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 + ) + (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.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + i32.eq if - i32.const 0 - i32.const 1088 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + return end local.get $1 - i32.const 12 - i32.add i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1552 - i32.store offset=8 - local.get $1 - i32.const 1552 - call $~lib/string/String.__eq + local.get $0 + select i32.eqz 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.const 1 + i32.shr_u i32.ne if i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - local.get $0 - i32.load8_u offset=2 - i32.const 144 - 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 $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.const 1 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + select + i32.eqz + if + 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 83 - 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=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.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 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 + 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 @@ -3224,9 +4138,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 @@ -3247,9 +4162,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 @@ -3270,9 +4186,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 @@ -3295,9 +4212,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 @@ -3320,9 +4238,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 @@ -3345,9 +4264,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 @@ -3370,9 +4290,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 @@ -3395,9 +4316,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 @@ -3420,9 +4342,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 @@ -3448,22 +4371,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 @@ -3512,266 +4450,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 @@ -3779,9 +4484,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 @@ -3800,11 +4503,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 @@ -3825,37 +4539,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) @@ -3867,15 +4762,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 @@ -3891,40 +4798,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 @@ -3941,19 +4848,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 @@ -3973,11 +4880,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 @@ -3996,10 +4903,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 @@ -4053,13 +4960,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 @@ -4067,33 +4974,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 68713c53c4..0d8ab54662 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -2,22 +2,21 @@ (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_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $none_=>_i64 (func (result i64))) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $i32_=>_f64 (func (param i32) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 1056)) @@ -39,7 +38,7 @@ (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 40812)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 42268)) (memory $0 1) (data (i32.const 1036) "<") (data (i32.const 1048) "\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") @@ -648,295 +647,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) @@ -3349,8 +4061,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 @@ -3541,25 +4313,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 @@ -3621,8 +4395,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 @@ -3764,25 +4598,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 @@ -3836,8 +4672,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 @@ -3979,25 +4875,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 @@ -4037,7 +4935,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 @@ -4057,7 +5077,7 @@ local.get $1 i32.mul local.set $1 - br $while-continue|0 + br $while-continue|1 end end local.get $2 @@ -4144,15 +5164,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 @@ -4161,19 +5181,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 @@ -4183,43 +5263,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 @@ -4228,14 +5308,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 @@ -4253,20 +5333,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 @@ -4274,7 +5354,7 @@ local.get $0 local.set $2 loop $while-continue|1 - local.get $7 + local.get $5 i32.const 48 i32.eq if @@ -4283,22 +5363,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 @@ -4312,25 +5392,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 @@ -4342,14 +5422,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 @@ -4362,15 +5442,15 @@ 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 0 - local.get $12 + local.get $13 i32.const 1 - local.get $7 + local.get $5 i32.const 46 i32.eq select @@ -4385,23 +5465,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 @@ -4410,12 +5492,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 @@ -4423,7 +5505,7 @@ i32.add local.tee $0 i32.load16_u - local.tee $7 + local.tee $5 i32.const 48 i32.sub local.set $2 @@ -4436,7 +5518,7 @@ i32.const 1 local.get $3 local.get $1 - local.get $12 + local.get $13 select i32.const 19 local.get $1 @@ -4458,7 +5540,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 @@ -4583,7 +5665,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 @@ -4594,9 +5676,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 @@ -4610,7 +5692,7 @@ i32.gt_s select if - local.get $10 + local.get $11 local.get $0 i32.const 3 i32.shl @@ -4618,20 +5700,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 @@ -4644,7 +5726,7 @@ i32.const 0 i32.gt_s if - local.get $10 + local.get $11 local.get $0 i32.const 3 i32.shl @@ -4654,7 +5736,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 @@ -4669,12 +5751,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 @@ -4686,13 +5768,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 @@ -4703,11 +5785,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 @@ -4719,19 +5801,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 @@ -4740,7 +5822,7 @@ i64.shl i64.add f64.reinterpret_i64 - local.get $13 + local.get $10 f64.convert_i64_u f64.div i64.trunc_f64_u @@ -4755,12 +5837,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 @@ -4773,52 +5855,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 @@ -4828,17 +5908,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 @@ -4846,34 +5925,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 @@ -4884,7 +5961,7 @@ end end end - local.get $11 + local.get $12 f64.copysign return end @@ -5136,170 +6213,109 @@ local.get $5 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 + (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.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 + 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) @@ -5333,7 +6349,7 @@ i32.wrap_i64 i32.const 1 i32.shl - i32.const 15824 + i32.const 17280 i32.add i32.load16_u i32.store16 @@ -5368,7 +6384,7 @@ i32.wrap_i64 i32.const 1 i32.shl - i32.const 15824 + i32.const 17280 i32.add i32.load16_u i32.store16 @@ -5382,111 +6398,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) @@ -5506,6 +6504,7 @@ i32.sub local.tee $9 i64.extend_i32_s + local.tee $0 i64.shl local.tee $10 i64.const 1 @@ -5514,12 +6513,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 @@ -5649,7 +6693,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 21408 + i32.const 22864 i32.add local.get $3 i32.const 65535 @@ -5684,7 +6728,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 22336 + i32.const 23792 i32.add i64.load32_u local.get $9 @@ -5694,28 +6738,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 @@ -5726,12 +6754,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 @@ -5739,8 +6785,8 @@ br $while-continue|3 end end + local.get $7 local.get $3 - local.get $1 i32.store16 local.get $5 return @@ -5772,7 +6818,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 21408 + i32.const 22864 i32.add local.get $6 i32.wrap_i64 @@ -5810,7 +6856,7 @@ i32.sub i32.const 2 i32.shl - i32.const 22336 + i32.const 23792 i32.add i64.load32_u i64.mul @@ -5818,28 +6864,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 @@ -5850,12 +6880,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 @@ -5863,13 +6911,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 @@ -5888,18 +6939,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 @@ -5917,27 +6968,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 @@ -5958,20 +7009,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 @@ -5987,7 +7038,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $3 + local.get $5 i32.lt_s if local.get $0 @@ -6005,7 +7056,7 @@ end end local.get $1 - local.get $3 + local.get $5 i32.add else local.get $1 @@ -6016,10 +7067,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 @@ -6033,13 +7084,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 @@ -6072,16 +7170,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 @@ -6089,16 +7187,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 @@ -6113,22 +7258,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 @@ -6137,19 +7283,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 @@ -6158,51 +7304,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 @@ -6211,9 +7358,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 @@ -6221,71 +7368,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 @@ -6294,14 +7441,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 @@ -6311,24 +7458,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 @@ -6340,27 +7487,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 @@ -6369,8 +7516,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 @@ -6468,19 +7615,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) @@ -6494,14 +7628,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 @@ -6556,9 +7701,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 @@ -6779,30 +7922,40 @@ (local $1 i32) (local $2 f64) (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 i32) - (local $6 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 @@ -6817,9 +7970,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 @@ -6835,9 +7989,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 @@ -6853,9 +8008,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 @@ -6920,23 +8076,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 @@ -6981,19 +8133,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 @@ -7004,9 +8171,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 @@ -7036,20 +8204,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 @@ -7058,12 +8226,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 @@ -7075,16 +8243,16 @@ unreachable end global.get $~lib/memory/__stack_pointer + local.tee $1 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 + 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 @@ -7094,9 +8262,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 @@ -7114,9 +8283,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 @@ -7128,8 +8298,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 @@ -7141,8 +8314,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 @@ -7157,9 +8333,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 @@ -7180,9 +8357,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 @@ -7203,9 +8381,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 @@ -7226,9 +8405,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 @@ -7248,9 +8428,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 @@ -7277,9 +8458,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 @@ -7306,9 +8488,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 @@ -7335,9 +8518,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 @@ -7356,9 +8540,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 @@ -7377,9 +8562,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 @@ -7398,9 +8584,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 @@ -7416,21 +8603,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 @@ -7440,17 +8620,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 @@ -7464,47 +8653,43 @@ 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 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 536870910 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 536870910 + i32.gt_s + select + i32.const 2204 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if (result i32) i32.const 1 - i32.shr_u - local.tee $4 - local.get $4 - i32.const 536870910 - i32.gt_u - select - local.get $1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - br_if $__inlined_func$~lib/string/String#endsWith - drop + else local.get $0 - local.get $1 - i32.const 2208 local.get $3 + i32.const 2208 + local.get $1 call $~lib/util/string/compareImpl - i32.eqz end - i32.eqz if i32.const 0 i32.const 1120 @@ -7514,13 +8699,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 @@ -7535,21 +8721,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 @@ -7566,21 +8754,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 @@ -7597,9 +8787,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 @@ -7608,9 +8799,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 @@ -7626,9 +8818,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 @@ -7637,9 +8830,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 @@ -7655,9 +8849,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 @@ -7666,9 +8861,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 @@ -7684,9 +8880,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 @@ -7695,9 +8892,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 @@ -7713,9 +8911,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 @@ -7724,9 +8923,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 @@ -7742,9 +8942,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 @@ -7753,9 +8954,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 @@ -7771,21 +8973,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 @@ -7802,21 +9006,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 @@ -7833,9 +9039,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 @@ -7844,9 +9051,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 @@ -7862,9 +9070,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 @@ -7873,9 +9082,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 @@ -7891,9 +9101,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 @@ -7902,9 +9113,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 @@ -7920,9 +9132,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 @@ -7931,9 +9144,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 @@ -7949,9 +9163,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 @@ -7960,9 +9175,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 @@ -7978,9 +9194,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 @@ -7989,9 +9206,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 @@ -8007,9 +9225,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 @@ -8025,9 +9244,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 @@ -8045,9 +9265,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 @@ -8063,15 +9284,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 @@ -8083,13 +9304,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 @@ -8102,13 +9324,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 @@ -8123,13 +9346,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 @@ -8144,13 +9368,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 @@ -8165,13 +9390,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 @@ -8186,13 +9412,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 @@ -8207,9 +9434,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 @@ -8225,9 +9453,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 @@ -8245,13 +9474,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 @@ -8275,13 +9505,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 @@ -8296,13 +9527,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 @@ -8317,13 +9549,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 @@ -8338,13 +9571,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 @@ -8359,13 +9593,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 @@ -8380,13 +9615,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 @@ -8401,13 +9637,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 @@ -8422,13 +9659,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 @@ -8441,9 +9679,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 @@ -8458,9 +9697,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 @@ -8477,9 +9717,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 @@ -8496,9 +9737,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 @@ -8513,9 +9755,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 @@ -8532,9 +9775,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 @@ -8551,9 +9795,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 @@ -8570,9 +9815,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 @@ -8589,9 +9835,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 @@ -8608,9 +9855,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 @@ -8633,9 +9881,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 @@ -8657,9 +9906,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 @@ -8681,9 +9931,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 @@ -8705,9 +9956,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 @@ -8729,9 +9981,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 @@ -8753,9 +10006,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 @@ -8777,9 +10031,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 @@ -8801,9 +10056,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 @@ -8825,9 +10081,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 @@ -9424,8 +10681,8 @@ i32.const 0 call $~lib/util/string/strtol f32.demote_f64 - local.tee $6 - local.get $6 + local.tee $4 + local.get $4 f32.eq if i32.const 0 @@ -11316,9 +12573,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 @@ -11326,9 +12584,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 @@ -11336,9 +12595,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 @@ -11346,9 +12606,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 @@ -11762,12 +13023,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 @@ -11803,9 +13065,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 @@ -11836,9 +13099,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 @@ -11853,9 +13117,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 @@ -11870,9 +13135,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 @@ -11887,9 +13153,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 @@ -11905,9 +13172,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 @@ -11922,9 +13190,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 @@ -11940,9 +13209,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 @@ -11957,9 +13227,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 @@ -11974,9 +13245,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 @@ -11992,9 +13264,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 @@ -12009,9 +13282,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 @@ -12026,9 +13300,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 @@ -12044,9 +13319,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 @@ -12062,9 +13338,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 @@ -12079,9 +13356,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 @@ -12097,9 +13375,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 @@ -12114,9 +13393,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 @@ -12132,9 +13412,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 @@ -12150,9 +13431,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 @@ -12167,9 +13449,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 @@ -12184,9 +13467,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 @@ -12201,9 +13485,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 @@ -12218,9 +13503,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 @@ -12235,9 +13521,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 @@ -12252,9 +13539,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 @@ -12269,9 +13557,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 @@ -12286,9 +13575,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 @@ -12304,9 +13594,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 @@ -12322,9 +13613,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 @@ -12339,9 +13631,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 @@ -12356,9 +13649,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 @@ -12374,9 +13668,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 @@ -12392,9 +13687,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 @@ -12409,9 +13705,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 @@ -12426,9 +13723,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 @@ -12443,9 +13741,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 @@ -12460,9 +13759,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 @@ -12478,9 +13778,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 @@ -12495,9 +13796,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 @@ -12512,9 +13814,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 @@ -12530,9 +13833,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 @@ -12548,9 +13852,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 @@ -12566,9 +13871,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 @@ -12583,9 +13889,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 @@ -12601,9 +13908,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 @@ -12677,9 +13985,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 @@ -12702,9 +14011,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 @@ -12727,9 +14037,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 @@ -12752,9 +14063,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 @@ -12777,9 +14089,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 @@ -12802,9 +14115,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 @@ -12827,9 +14141,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 @@ -12852,9 +14167,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 @@ -12877,9 +14193,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 @@ -12895,12 +14212,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 @@ -12909,9 +14227,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 @@ -12927,12 +14246,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 @@ -12941,9 +14261,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 @@ -12959,12 +14280,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 @@ -12973,9 +14295,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 @@ -12991,12 +14314,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 @@ -13005,9 +14329,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 @@ -13023,12 +14348,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 @@ -13037,9 +14363,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 @@ -13055,12 +14382,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 @@ -13069,9 +14397,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 @@ -13087,12 +14416,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 @@ -13101,9 +14431,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 @@ -13119,12 +14450,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 @@ -13133,9 +14465,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 @@ -13151,12 +14484,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 @@ -13165,9 +14499,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 @@ -13183,12 +14518,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 @@ -13197,9 +14533,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 @@ -13215,12 +14552,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 @@ -13229,9 +14567,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 @@ -13247,12 +14586,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 @@ -13261,9 +14601,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 @@ -13279,12 +14620,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 @@ -13293,9 +14635,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 @@ -13311,12 +14654,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 @@ -13325,9 +14669,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 @@ -13343,12 +14688,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 @@ -13357,9 +14703,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 @@ -13375,12 +14722,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 @@ -13389,9 +14737,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 @@ -13407,12 +14756,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 @@ -13421,9 +14771,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 @@ -13439,12 +14790,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 @@ -13453,9 +14805,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 @@ -13471,12 +14824,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 @@ -13485,9 +14839,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 @@ -13503,12 +14858,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 @@ -13517,9 +14873,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 @@ -13535,12 +14892,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 @@ -13549,9 +14907,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 @@ -13567,12 +14926,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 @@ -13581,9 +14941,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 @@ -13599,12 +14960,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 @@ -13613,9 +14975,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 @@ -13631,12 +14994,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 @@ -13645,9 +15009,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 @@ -13663,12 +15028,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 @@ -13677,9 +15043,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 @@ -13695,12 +15062,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 @@ -13709,9 +15077,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 @@ -13727,12 +15096,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 @@ -13741,9 +15111,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 @@ -13759,12 +15130,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 @@ -13773,9 +15145,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 @@ -13791,12 +15164,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 @@ -13805,9 +15179,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 @@ -13823,12 +15198,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 @@ -13837,9 +15213,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 @@ -13855,12 +15232,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 @@ -13869,9 +15247,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 @@ -13887,12 +15266,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 @@ -13901,9 +15281,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 @@ -13919,12 +15300,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 @@ -13933,9 +15315,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 @@ -13951,12 +15334,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 @@ -13965,9 +15349,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 @@ -13983,12 +15368,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 @@ -13997,9 +15383,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 @@ -14015,12 +15402,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 @@ -14029,9 +15417,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 @@ -14047,12 +15436,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 @@ -14061,9 +15451,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 @@ -14079,12 +15470,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 @@ -14093,9 +15485,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 @@ -14121,9 +15514,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 @@ -14148,9 +15542,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 @@ -14175,9 +15570,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 @@ -14202,9 +15598,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 @@ -14229,9 +15626,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 @@ -14256,9 +15654,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 @@ -14283,9 +15682,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 @@ -14310,9 +15710,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 @@ -14337,9 +15738,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 @@ -14364,9 +15766,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 @@ -14391,9 +15794,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 @@ -14418,9 +15822,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 @@ -14445,9 +15850,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 @@ -14472,9 +15878,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 @@ -14499,9 +15906,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 @@ -14526,9 +15934,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 @@ -14553,9 +15962,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 @@ -14580,9 +15990,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 @@ -14607,9 +16018,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 @@ -14634,9 +16046,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 @@ -14661,9 +16074,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 @@ -14688,9 +16102,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 @@ -14715,9 +16130,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 @@ -14742,9 +16158,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 @@ -14769,9 +16186,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 @@ -14796,9 +16214,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 @@ -14823,9 +16242,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 @@ -14841,9 +16261,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 @@ -14860,9 +16281,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 @@ -14881,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 1712 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1712 i32.const 1712 i32.const 2147483647 @@ -14904,12 +16327,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 @@ -14926,9 +16350,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 @@ -14947,12 +16372,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 @@ -14969,9 +16395,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 @@ -14990,12 +16417,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 @@ -15012,9 +16440,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 @@ -15029,9 +16458,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 @@ -15046,9 +16476,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 @@ -15067,12 +16498,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 @@ -15089,9 +16521,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 @@ -15106,9 +16539,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 @@ -15123,9 +16557,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 @@ -15144,12 +16579,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 @@ -15166,9 +16602,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 @@ -15183,9 +16620,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 @@ -15200,9 +16638,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 @@ -15217,9 +16656,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 @@ -15238,12 +16678,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 @@ -15260,9 +16701,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 @@ -15277,9 +16719,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 @@ -15294,9 +16737,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 @@ -15311,9 +16755,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 @@ -15332,12 +16777,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 @@ -15354,9 +16800,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 @@ -15371,9 +16818,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 @@ -15388,9 +16836,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 @@ -15405,9 +16854,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 @@ -15426,12 +16876,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 @@ -15448,9 +16899,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 @@ -15465,9 +16917,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 @@ -15482,9 +16935,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 @@ -15503,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 0 @@ -15526,12 +16981,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 @@ -15548,9 +17004,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 @@ -15569,12 +17026,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 @@ -15591,9 +17049,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 @@ -15612,12 +17071,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 @@ -15634,9 +17094,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 @@ -15651,9 +17112,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 @@ -15668,9 +17130,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 @@ -15689,12 +17152,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 @@ -15711,9 +17175,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 @@ -15728,9 +17193,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 @@ -15745,9 +17211,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 @@ -15766,12 +17233,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 @@ -15788,9 +17256,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 @@ -15805,9 +17274,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 @@ -15822,9 +17292,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 @@ -15847,9 +17318,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 @@ -15869,9 +17341,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 @@ -15891,13 +17364,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 @@ -15913,13 +17387,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 @@ -15935,9 +17410,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 @@ -15957,13 +17433,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 @@ -15979,9 +17456,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 @@ -16001,13 +17479,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 @@ -16023,13 +17502,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 @@ -16045,13 +17525,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 @@ -16067,13 +17548,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 @@ -16089,13 +17571,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 @@ -16111,13 +17594,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 @@ -16133,13 +17617,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 @@ -16155,13 +17640,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 @@ -16177,13 +17663,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 @@ -16199,13 +17686,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 @@ -16221,9 +17709,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 @@ -16243,13 +17732,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 @@ -16265,13 +17755,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 @@ -16287,13 +17778,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 @@ -16309,13 +17801,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 @@ -16331,9 +17824,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 @@ -16353,9 +17847,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 @@ -16375,13 +17870,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 @@ -16397,9 +17893,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 @@ -16419,13 +17916,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 @@ -16441,13 +17939,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 @@ -16463,13 +17962,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 @@ -16485,13 +17985,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 @@ -16507,13 +18008,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 @@ -16529,13 +18031,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 @@ -16551,13 +18054,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 @@ -16573,13 +18077,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 @@ -16595,13 +18100,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 @@ -16617,13 +18123,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 @@ -16639,13 +18146,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 @@ -16661,13 +18169,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 @@ -16683,9 +18192,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 @@ -16705,13 +18215,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 @@ -16727,13 +18238,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 @@ -16749,13 +18261,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 @@ -16771,13 +18284,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 @@ -16793,13 +18307,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 @@ -16815,13 +18330,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 @@ -16837,9 +18353,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 @@ -16859,9 +18376,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 @@ -16881,9 +18399,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 @@ -16903,13 +18422,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 @@ -16925,13 +18445,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 @@ -16947,13 +18468,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 @@ -16969,13 +18491,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 @@ -16991,13 +18514,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 @@ -17013,13 +18537,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 @@ -17035,13 +18560,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 @@ -17057,13 +18583,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 @@ -17079,13 +18606,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 @@ -17101,13 +18629,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 @@ -17123,13 +18652,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 @@ -17145,13 +18675,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 @@ -17167,13 +18698,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 @@ -17189,13 +18721,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 @@ -17211,13 +18744,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 @@ -17233,13 +18767,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 @@ -17255,13 +18790,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 @@ -17277,13 +18813,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 @@ -17299,13 +18836,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 @@ -17321,13 +18859,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 @@ -17343,13 +18882,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 @@ -17365,13 +18905,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 @@ -17387,9 +18928,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 @@ -17409,13 +18951,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 @@ -17431,9 +18974,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 @@ -17453,9 +18997,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 @@ -17475,13 +19020,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 @@ -17497,13 +19043,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 @@ -17519,13 +19066,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 @@ -17541,13 +19089,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 @@ -17563,13 +19112,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 @@ -17585,13 +19135,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 @@ -17607,13 +19158,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 @@ -17629,13 +19181,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 @@ -17651,13 +19204,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 @@ -17673,13 +19227,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 @@ -17695,13 +19250,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 @@ -17717,13 +19273,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 @@ -17739,13 +19296,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 @@ -17761,13 +19319,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 @@ -17783,13 +19342,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 @@ -17805,13 +19365,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 @@ -17827,13 +19388,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 @@ -17849,9 +19411,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 @@ -17871,13 +19434,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 @@ -17893,13 +19457,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 @@ -17915,13 +19480,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 @@ -17937,13 +19503,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 @@ -17959,13 +19526,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 @@ -17981,13 +19549,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 @@ -18003,13 +19572,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 @@ -18025,13 +19595,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 @@ -18047,13 +19618,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 @@ -18069,13 +19641,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 @@ -18091,13 +19664,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 @@ -18113,9 +19687,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 @@ -18135,9 +19710,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 @@ -18157,9 +19733,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 @@ -18179,13 +19756,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 @@ -18201,13 +19779,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 @@ -18223,13 +19802,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 @@ -18245,13 +19825,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 @@ -18267,13 +19848,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 @@ -18289,13 +19871,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 @@ -18311,13 +19894,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 @@ -18333,13 +19917,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 @@ -18355,13 +19940,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 @@ -18377,13 +19963,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 @@ -18399,13 +19986,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 @@ -18421,13 +20009,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 @@ -18443,13 +20032,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 @@ -18465,13 +20055,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 @@ -18487,9 +20078,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 @@ -18509,9 +20101,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 @@ -18531,13 +20124,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 @@ -18553,13 +20147,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 @@ -18575,13 +20170,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 @@ -18597,13 +20193,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 @@ -18619,13 +20216,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 @@ -18641,13 +20239,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 @@ -18663,13 +20262,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 @@ -18685,13 +20285,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 @@ -18707,13 +20308,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 @@ -18729,13 +20331,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 @@ -18751,13 +20354,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 @@ -18773,13 +20377,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 @@ -18795,13 +20400,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 @@ -18817,13 +20423,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 @@ -18839,13 +20446,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 @@ -18861,13 +20469,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 @@ -18883,13 +20492,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 @@ -18905,13 +20515,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 @@ -18927,13 +20538,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 @@ -18948,13 +20560,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 @@ -18969,13 +20582,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 @@ -18990,9 +20604,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 @@ -19011,13 +20626,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 @@ -19032,9 +20648,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 @@ -19053,9 +20670,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 @@ -19074,13 +20692,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 @@ -19095,9 +20714,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 @@ -19116,13 +20736,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 @@ -19137,13 +20758,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 @@ -19158,13 +20780,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 @@ -19179,13 +20802,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 @@ -19200,13 +20824,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 @@ -19221,13 +20846,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 @@ -19242,13 +20868,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 @@ -19263,9 +20890,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 @@ -19284,13 +20912,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 @@ -19305,9 +20934,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 @@ -19326,13 +20956,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 @@ -19347,13 +20978,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 @@ -19368,13 +21000,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 @@ -19389,13 +21022,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 @@ -19410,13 +21044,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 @@ -19431,13 +21066,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 @@ -19452,13 +21088,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 @@ -19473,13 +21110,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 @@ -19494,9 +21132,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 @@ -19515,13 +21154,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 @@ -19536,13 +21176,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 @@ -19557,9 +21198,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 @@ -19578,13 +21220,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 @@ -19599,13 +21242,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 @@ -19620,13 +21264,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 @@ -19641,13 +21286,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 @@ -19662,13 +21308,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 @@ -19683,13 +21330,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 @@ -19704,13 +21352,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 @@ -19725,13 +21374,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 @@ -19746,13 +21396,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 @@ -19767,13 +21418,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 @@ -19788,13 +21440,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 @@ -19809,13 +21462,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 @@ -19830,13 +21484,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 @@ -19851,13 +21506,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 @@ -19872,13 +21528,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 @@ -19893,13 +21550,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 @@ -19914,13 +21572,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 @@ -19935,13 +21594,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 @@ -19956,13 +21616,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 @@ -19977,13 +21638,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 @@ -19995,23 +21657,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 @@ -20023,23 +21687,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 @@ -20051,23 +21717,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 @@ -20079,9 +21747,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 @@ -20089,9 +21758,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 @@ -20108,7 +21778,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 @@ -20154,7 +21824,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 @@ -20201,11 +21881,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 @@ -20240,11 +21931,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 @@ -20261,6 +21962,7 @@ local.get $6 call $~lib/memory/memory.copy end + local.get $5 local.get $3 i32.store i32.const 16 @@ -20296,16 +21998,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 @@ -20352,11 +22063,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 $1 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2 local.get $0 i32.const 65535 @@ -20418,7 +22140,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 @@ -20516,7 +22248,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 @@ -20617,7 +22359,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 @@ -20629,29 +22381,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 @@ -20661,10 +22475,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 @@ -20675,16 +22489,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 @@ -20695,11 +22509,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 @@ -20711,30 +22536,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 @@ -20744,8 +22631,8 @@ i32.const 1712 return end - local.get $1 local.get $2 + local.get $3 i32.eq if global.get $~lib/memory/__stack_pointer @@ -20756,30 +22643,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 @@ -20789,59 +22687,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 @@ -20852,12 +22872,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 @@ -20868,22 +22888,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) @@ -20893,11 +22913,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 @@ -20905,8 +22935,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 @@ -20914,7 +22944,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.add local.tee $2 i32.eqz @@ -20955,28 +22985,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 @@ -21042,7 +23085,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 @@ -21174,29 +23227,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 @@ -21215,16 +23278,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 @@ -21234,34 +23297,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 @@ -21270,18 +23333,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 @@ -21289,49 +23352,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 @@ -21343,18 +23406,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 + else + i32.const 0 + end + i32.eqz if global.get $~lib/memory/__stack_pointer local.get $4 @@ -21362,102 +23435,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 @@ -21466,27 +23539,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 @@ -21508,7 +23581,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 @@ -21604,7 +23687,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 @@ -21684,7 +23777,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 @@ -21786,7 +23889,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 @@ -21830,13 +23943,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 @@ -21873,39 +23999,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 @@ -21918,39 +24088,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 @@ -21958,16 +24235,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 @@ -22001,21 +24291,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 @@ -22035,30 +24369,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 @@ -22067,16 +24510,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 @@ -22114,39 +24570,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 @@ -22168,28 +24715,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 @@ -22198,17 +24849,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 @@ -22246,7 +24910,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $3 + local.tee $4 select local.set $0 local.get $1 @@ -22257,43 +24921,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 @@ -22301,7 +25056,7 @@ i32.eq if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 63 local.get $0 i64.clz @@ -22312,42 +25067,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 @@ -22355,7 +25215,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) @@ -22364,7 +25224,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 @@ -22376,7 +25246,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 21344 + i32.const 22800 return end local.get $0 @@ -22401,7 +25271,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 @@ -22420,7 +25290,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 a80d267971..d1be29d48a 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 $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $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))) (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) @@ -98,29 +97,6 @@ (data (i32.const 2684) "\10\01\82\00\00\00\00\00\10A\02") (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,20 +1143,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1195,11 +1169,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 @@ -1209,10 +1186,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 @@ -1233,28 +1212,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 @@ -1351,242 +1330,43 @@ 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.gt_u - if - i32.const 1136 - i32.const 1472 - i32.const 458 - i32.const 29 - 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 - i32.const 4 - i32.sub + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + 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 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $2 i32.const 1 i32.sub - i32.add + i32.const 0 + i32.store8 + 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 2 + i32.sub + i32.const 0 + i32.store8 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 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 - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - 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 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1728,6 +1508,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 @@ -1745,12 +1529,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 @@ -1766,13 +1550,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 @@ -1786,81 +1571,292 @@ 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.gt_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 29 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.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $3 + end + i32.const 4 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $5 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $6 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $6 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + i32.load + local.set $5 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1472 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $6 + local.get $3 + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $3 + local.get $6 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $6 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $6 + i32.const 4 + i32.add + local.tee $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + local.get $3 + local.get $6 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $6 + 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 1200 + 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 + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white i32.eqz i32.eq if @@ -1874,7 +1870,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $4 + local.get $3 i32.const 3 i32.eq select @@ -1885,24 +1881,6 @@ 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) @@ -2122,7 +2100,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 @@ -2136,15 +2114,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -2152,20 +2133,20 @@ i32.eqz 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 @@ -2178,33 +2159,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 @@ -2212,131 +2193,13 @@ end i32.eqz ) - (func $~lib/map/Map<~lib/string/String,usize>#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#get (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 $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 - 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.add - local.set $8 - br $while-continue|0 - end - end 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 @@ -2345,811 +2208,2054 @@ 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 + 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 $2 - local.get $8 + 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 $2 - local.get $6 - local.get $7 - call $~lib/util/hash/HASH + local.get $0 local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $7 - i32.load + i32.load offset=8 i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 + 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 - local.get $8 - i32.const 12 + 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 $8 - br $while-continue|0 + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 end - 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 - 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/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.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 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + i32.const 1 + 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) (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 + 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 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 + 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 $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 $~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 + 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 @@ -3160,8 +4266,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 @@ -3184,20 +4354,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 @@ -3219,77 +4401,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 @@ -3299,24 +4481,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 @@ -3324,13 +4571,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 @@ -3348,22 +4596,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 @@ -3384,14 +4663,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 @@ -3473,13 +4767,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 @@ -3492,14 +4787,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 @@ -3511,13 +4807,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 @@ -3536,9 +4843,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 @@ -3559,9 +4867,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 @@ -3580,9 +4889,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 @@ -3608,7 +4918,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 @@ -3638,223 +4958,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 41847e41dc..7c02ba2beb 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -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 959bf864c8..11092c65c0 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -1,44 +1,37 @@ (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 $i64_i64_=>_i32 (func (param i64 i64) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) (type $f64_f64_i32_i32_=>_f64 (func (param f64 f64 i32 i32) (result f64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_i32_i32_=>_f32 (func (param f32 i32 i32) (result f32))) (type $f64_i32_i32_=>_f64 (func (param f64 i32 i32) (result f64))) - (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 $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 $f32_i32_i32_=>_none (func (param f32 i32 i32))) (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) @@ -64,7 +57,7 @@ (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)) (memory $0 1) (data (i32.const 1036) ",") (data (i32.const 1048) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") @@ -403,245 +396,239 @@ (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 $0 (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) (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 @@ -1514,12 +1491,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) @@ -1566,7 +1546,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 @@ -1597,7 +1582,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 30852 + i32.const 32308 i32.lt_u if local.get $0 @@ -1629,7 +1614,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 @@ -1687,7 +1677,7 @@ unreachable end local.get $0 - i32.const 30852 + i32.const 32308 i32.lt_u if local.get $0 @@ -1715,10 +1705,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 @@ -1739,28 +1731,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 @@ -1873,23 +1865,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 @@ -1897,25 +1909,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 @@ -1942,7 +1939,7 @@ unreachable end end - local.get $0 + local.get $2 local.get $1 i32.const 16 i32.shl @@ -1950,8 +1947,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 @@ -1964,7 +1961,7 @@ unreachable end end - local.get $2 + local.get $0 local.get $1 i32.load i32.const -4 @@ -1978,13 +1975,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 @@ -2000,33 +1997,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 @@ -2056,18 +2053,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) @@ -2223,8 +2208,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 @@ -2261,6 +2246,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 @@ -2305,7 +2291,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 @@ -2319,19 +2306,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 @@ -2351,7 +2363,6 @@ local.get $1 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - (local $2 i32) local.get $1 i32.eqz if @@ -2384,8 +2395,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 @@ -2397,7 +2406,7 @@ i32.const 1 i32.eq i32.const 0 - local.get $2 + local.get $0 i32.const 3 i32.eq select @@ -2408,40 +2417,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 @@ -3026,7 +3038,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 @@ -3267,139 +3289,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) @@ -3554,7 +3579,7 @@ i32.lt_s select end - local.tee $0 + local.tee $2 local.get $3 i32.const 0 i32.lt_s @@ -3562,9 +3587,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 @@ -3576,714 +3601,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 99 - 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 99 - 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 99 + 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 99 + 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 @@ -4661,49 +5341,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 @@ -4988,98 +5625,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 @@ -5087,364 +5638,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 @@ -5455,99 +5677,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 @@ -5555,2796 +5689,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 @@ -8355,10 +9002,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 @@ -8378,35 +9062,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 @@ -8421,10 +9116,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 @@ -8433,10 +9164,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 @@ -8447,10 +9215,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 @@ -8461,10 +9266,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 @@ -8475,10 +9317,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 @@ -8489,10 +9368,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 @@ -8503,10 +9419,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 @@ -8517,52 +9470,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 @@ -8576,8 +9710,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 @@ -8591,8 +9775,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 @@ -8603,10 +9837,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 @@ -8617,10 +9890,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 @@ -8631,10 +9943,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 @@ -8645,10 +9996,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 @@ -8659,10 +10049,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 @@ -8673,10 +10097,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 @@ -8691,304 +10149,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 @@ -9005,1347 +10622,2989 @@ 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 + 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.const 0 - i32.const 1568 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + select + i32.eqz + 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 + 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.const 0 - i32.const 1568 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + select + i32.eqz + 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 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 584 + i32.const 581 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 + local.set $1 + i32.const -1 + 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.const 0 - i32.const 1568 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + select + i32.eqz + 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 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 582 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 + 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.const 0 - i32.const 1568 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + select + i32.eqz + 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 local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 583 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 + i32.const 2 + local.set $1 + i32.const -1 + 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 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 584 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 3 + local.set $1 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 592 + 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 - 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 585 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 + 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 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 595 + 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 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 587 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 + 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 + 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 $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 597 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf + global.set $~argumentsLength + local.get $2 + local.tee $0 + i32.load offset=8 i32.const 1 - i32.ne + i32.shr_u + local.set $1 + i32.const -1 + 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.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 $2 if i32.const 0 i32.const 1568 - i32.const 598 + i32.const 590 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.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf + i32.shr_u + local.set $1 + i32.const -1 + 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.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 $2 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 599 + i32.const 591 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 - local.tee $0 - i32.store offset=8 + i32.const 1 + global.set $~argumentsLength 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.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 $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|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 4 - 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 604 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + i32.load offset=8 i32.const 1 + i32.shr_u + local.set $1 + i32.const -1 + 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.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 $2 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 605 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 9 - i32.const 0 - 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 606 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf 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 + 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 $1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 607 + i32.const 595 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 - i32.const 0 - 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 608 + i32.const 596 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 + 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 609 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 - 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.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 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 598 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 - local.get $1 + i32.const -1 + 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.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 + 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 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/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 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.get $1 + i32.const -1 + i32.ne if i32.const 0 i32.const 1568 - i32.const 580 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 11 + i32.const 9 + call $~lib/typedarray/Int16Array#subarray + local.tee $4 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 i32.const -1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 582 + i32.const 603 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 + 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.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.get $3 + select + i32.eqz + 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 - 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 604 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 + 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.const 0 - i32.const 1568 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 605 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 + 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.const 0 - i32.const 1568 - i32.const 590 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - 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 606 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 0 + local.set $1 i32.const -1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - i32.const 1 - global.set $~argumentsLength local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 593 + i32.const 607 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 + 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.const 0 - i32.const 1568 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 595 + i32.const 608 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 + 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/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.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 597 + 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/Int16Array,i16>|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/Int16Array,i16>|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/Int16Array,i16>|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 -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 598 + i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - 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/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 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 599 - 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 9 - call $~lib/typedarray/Uint16Array#subarray local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 i32.store offset=8 local.get $0 - i32.const 3 + i32.const 7024 + i32.store + local.get $0 + i32.const 7036 + i32.load + 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 + i32.gt_s + if + local.get $2 + 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 + end + end i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + local.set $1 i32.const -1 - i32.ne + 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.const 0 + local.get $4 + select + i32.eqz + 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 - i32.const 603 + i32.const 580 i32.const 3 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/Uint16Array,u16>|inlined.01 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + 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 i32.const 0 i32.const 1568 - i32.const 604 + i32.const 581 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 + 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.const 0 + local.get $4 + select + i32.eqz + 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 i32.const 0 i32.const 1568 - i32.const 605 + i32.const 582 i32.const 3 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/Uint16Array,u16>|inlined.07 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + 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 i32.const 0 i32.const 1568 - i32.const 606 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + i32.const 2 + 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 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/Int16Array#indexOf + i32.const 3 + 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 i32.const 0 i32.const 1568 - i32.const 608 + 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/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 5 - i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 609 + 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/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 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 587 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) i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 local.get $2 - local.get $0 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - local.tee $4 - i32.ge_s + local.tee $3 + i32.const -100 + i32.le_s 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 + 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.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.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 2 + local.get $1 + i32.const 1 i32.shl i32.add - i32.load + i32.load16_u + i32.const 1 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/Uint16Array,u16>|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/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (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 1 + i32.shr_u + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $0 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 - local.get $4 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|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 2 + i32.const 1 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.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|0 + br $while-continue|00 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 end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Int32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - 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 + 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 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + i32.const -1 + 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 $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 - call $~lib/typedarray/Int32Array#__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|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 - local.get $0 - i32.const 0 - 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 580 + i32.const 591 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.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 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|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 -1 - 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 582 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + i32.const -1 + 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 583 - 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 3 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf + local.get $2 i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 584 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 3 - 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 585 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#indexOf i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|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/Uint16Array,u16>|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 $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.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 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/Int32Array#indexOf + i32.const -1 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|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/Uint16Array,u16>|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/Uint16Array,u16>|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/Int32Array#indexOf + 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 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|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/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 $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/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 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#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/Int32Array#lastIndexOf@varargs + i32.const -1 + 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 591 + 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/Uint16Array#subarray + local.tee $4 + i32.store offset=8 + i32.const 0 + local.set $1 i32.const -1 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - i32.const 1 - global.set $~argumentsLength local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 593 + 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.const 0 + local.get $3 + select + i32.eqz + 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 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne if i32.const 0 i32.const 1568 - i32.const 594 + i32.const 604 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.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 - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#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/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 599 + i32.const 605 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/Int32Array#subarray - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 3 i32.const 0 - call $~lib/typedarray/Int32Array#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/Int32Array#indexOf - if + 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.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 605 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 9 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.set $1 i32.const -1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf i32.const -1 i32.ne if @@ -10356,235 +13615,224 @@ 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 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 5 - i32.const 2 - call $~lib/typedarray/Int32Array#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/Uint32Array#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/Uint32Array,u32>|inlined.0 - local.get $2 - local.get $0 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 + 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 1 - local.get $4 + i32.le_u + i32.const 1 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|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/Uint16Array,u16>|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 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/Uint32Array,u32>|inlined.0 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|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/Uint32Array#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/Uint32Array,u32>|inlined.0 - local.get $0 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 + local.get $4 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - local.tee $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|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/Uint16Array,u16>|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 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/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|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/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 $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 + local.set $0 end local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#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/Uint32Array,u32> + (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 - 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/Uint32Array#constructor - 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 - 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/Uint32Array#__set + call $~lib/typedarray/Int32Array#__set local.get $1 i32.const 1 i32.add @@ -10592,10 +13840,49 @@ br $for-loop|0 end end - local.get $0 i32.const 0 - 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.0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/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 if i32.const 0 i32.const 1568 @@ -10604,13 +13891,53 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + local.set $1 i32.const -1 - i32.ne - if + 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.const 0 + local.get $4 + select + i32.eqz + 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.ne + if i32.const 0 i32.const 1568 i32.const 581 @@ -10618,10 +13945,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const -1 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.const 0 + local.get $4 + select + i32.eqz + 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 @@ -10632,10 +13999,50 @@ call $~lib/builtins/abort unreachable end - 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.07 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/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 3 i32.ne if @@ -10646,10 +14053,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf + local.set $1 + i32.const -1 + 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 3 i32.ne if @@ -10660,10 +14108,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#indexOf + local.set $1 + i32.const -1 + 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 + 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 3 i32.ne if @@ -10674,10 +14163,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 i32.const 4 - call $~lib/typedarray/Uint32Array#indexOf + 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 -1 i32.ne if @@ -10688,10 +14218,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 i32.const 10 - call $~lib/typedarray/Uint32Array#indexOf + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|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/Int32Array,i32>|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/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 @@ -10702,10 +14273,58 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint32Array#indexOf + 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|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/Int32Array,i32>|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 @@ -10718,9 +14337,65 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + local.get $2 + local.tee $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/Int32Array,i32>|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/Int32Array,i32>|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.const 2 + i32.shl + i32.add + 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|00 + end + end + i32.const -1 + local.set $2 + end + local.get $2 if i32.const 0 i32.const 1568 @@ -10732,8 +14407,64 @@ i32.const 1 global.set $~argumentsLength local.get $0 - i32.const 11 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + 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.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.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 $2 i32.const -1 i32.ne if @@ -10747,8 +14478,64 @@ 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 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + 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 @@ -10762,36 +14549,178 @@ i32.const 1 global.set $~argumentsLength local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#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/Uint32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 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/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.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 $2 + 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 - i32.const 3 + 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 - call $~lib/typedarray/Uint32Array#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 $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 + 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 $1 i32.const 3 i32.ne if @@ -10802,10 +14731,53 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + 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 + local.get $1 i32.const -1 i32.ne if @@ -10816,10 +14788,53 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + 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 $1 i32.const 1 i32.ne if @@ -10830,10 +14845,48 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint32Array#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 @@ -10844,10 +14897,48 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint32Array#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 @@ -10860,14 +14951,55 @@ end global.get $~lib/memory/__stack_pointer local.get $0 + i32.const 4 i32.const 9 - call $~lib/typedarray/Uint32Array#subarray - local.tee $0 + call $~lib/typedarray/Int32Array#subarray + local.tee $4 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.041 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + 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 @@ -10878,10 +15010,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 4 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.044 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + 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 @@ -10890,10 +15062,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 5 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.047 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + 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 @@ -10904,264 +15116,332 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 9 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + local.set $1 i32.const -1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Uint32Array#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 - i32.const 11 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + local.set $1 i32.const -1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 + local.get $3 + select + i32.eqz + 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 + 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.const 0 + local.get $3 + select + i32.eqz + 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 - 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 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/Int64Array#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/Int64Array,i64>|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/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 + 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/Int64Array,i64>|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/Int64Array#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/Int64Array,i64>|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/Int64Array,i64>|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/Int64Array,i64>|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/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 + 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/Int64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + (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/Int64Array#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/Int64Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $1 i32.const 1 i32.add @@ -11169,10 +15449,49 @@ br $for-loop|0 end end - local.get $0 - i64.const 0 i32.const 0 - call $~lib/typedarray/Int64Array#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.const 0 + local.get $4 + select + i32.eqz + 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 @@ -11181,10 +15500,50 @@ 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 + 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.const 0 + local.get $4 + select + i32.eqz + 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 @@ -11195,10 +15554,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const -1 i32.const 0 - call $~lib/typedarray/Int64Array#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.const 0 + local.get $4 + select + i32.eqz + 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 @@ -11209,873 +15608,1220 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + select + i32.eqz + 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 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 584 + 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/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 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 585 + i32.const 584 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 3 + 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 - 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 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf - 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 - 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 - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const -1 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 592 + 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 - call $~lib/builtins/abort - unreachable + 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 - 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 585 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 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf + 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 - end - local.get $0 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#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 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#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 $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 -11 - call $~lib/typedarray/Int64Array#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 9 - call $~lib/typedarray/Int64Array#subarray - local.tee $0 - i32.store offset=8 - local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + i32.const 10 + 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 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Int64Array#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 $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 local.get $0 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 606 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf 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 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if + local.get $0 i32.const 0 - i32.const 1568 - i32.const 608 - 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 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 609 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 5 + i32.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $0 + i32.load offset=8 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 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.shr_u + local.set $1 i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $2 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 local.get $0 i32.load offset=8 - i32.const 3 + 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.0 + 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/Uint64Array,u64>|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|00 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 3 + 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.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 - br $while-continue|0 + br $while-continue|00 end end i32.const -1 - local.set $3 + local.set $2 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 $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.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/Uint64Array,u64>|inlined.0 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 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/Uint64Array,u64>|inlined.0 - local.get $2 - local.get $4 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + 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|06 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/Uint64Array,u64>|inlined.0 - local.get $3 + 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|0 + br $while-continue|06 end end i32.const -1 - local.set $3 - 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 - i32.const 3 - i32.shr_u local.set $2 end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Uint64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - 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/Uint64Array#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/Uint64Array#__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/Uint64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 581 + i32.const 591 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $~argumentsLength local.get $0 - i64.const -1 - 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.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/Uint32Array,u32>|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 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|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/Uint32Array,u32>|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 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 + 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/Uint64Array#indexOf + 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 $3 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|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.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.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 i32.const 0 i32.const 1568 - i32.const 584 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#indexOf + 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.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|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/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 $1 i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 585 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#indexOf i32.const -1 + 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 + 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/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 $1 + i32.const 3 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 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Uint64Array#indexOf + 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 $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 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + 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 $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/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 - i64.const 0 - call $~lib/typedarray/Uint64Array#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 - i64.const 11 - call $~lib/typedarray/Uint64Array#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 591 + 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 - i64.const -1 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const 9 + call $~lib/typedarray/Uint32Array#subarray + local.tee $4 + i32.store offset=8 + i32.const 0 + local.set $1 i32.const -1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - i32.const 1 - global.set $~argumentsLength local.get $0 - i64.const 3 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 593 + i32.const 603 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 + 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.const 0 - i32.const 1568 - i32.const 594 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - 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 604 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 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 - end - local.get $0 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 597 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Uint64Array#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 - 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 605 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 - local.tee $0 - i32.store offset=8 - local.get $0 - i64.const 3 i32.const 0 - call $~lib/typedarray/Uint64Array#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 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - if + 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.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 local.get $0 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 605 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 9 i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.set $1 i32.const -1 - i32.ne - if + 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.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf i32.const -1 i32.ne if @@ -12086,259 +16832,327 @@ 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 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - 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 + 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.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 - i64.const 5 - 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 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/Float32Array#indexOf (param $0 i32) (param $1 f32) (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/Float32Array,f32>|inlined.0 - local.get $2 - local.get $0 + 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 $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/Float32Array,f32>|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/Uint32Array,u32>|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 + local.get $1 + local.tee $0 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 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 $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/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (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/Float32Array,f32>|inlined.0 - local.get $0 + 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 $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|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/Uint32Array,u32>|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 + local.get $1 + local.tee $0 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 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|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/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 $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 + local.set $0 end local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#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/Float32Array,f32> + (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 - 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 i32.const 0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 7024 i32.store + local.get $1 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 + 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 - local.get $2 i32.lt_s if + local.get $2 local.get $0 - local.get $1 i32.const 7024 - local.get $1 + local.get $0 call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end 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 + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|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/Int64Array,i64>|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 + 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 - call $~lib/typedarray/Float32Array#indexOf + local.set $0 + i32.const -1 + 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.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + 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 11 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|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 + local.get $1 i32.const -1 i32.ne if @@ -12349,10 +17163,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f32.const -1 i32.const 0 - call $~lib/typedarray/Float32Array#indexOf + local.set $0 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/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 @@ -12363,10 +17217,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 3 i32.const 0 - call $~lib/typedarray/Float32Array#indexOf + 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.const 0 + local.get $4 + select + i32.eqz + 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 @@ -12377,10 +17271,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 3 i32.const 2 - call $~lib/typedarray/Float32Array#indexOf + 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 @@ -12391,10 +17326,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 3 i32.const 3 - call $~lib/typedarray/Float32Array#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 @@ -12405,10 +17381,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 3 i32.const 4 - call $~lib/typedarray/Float32Array#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 @@ -12419,10 +17436,51 @@ call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 1 i32.const 10 - call $~lib/typedarray/Float32Array#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 @@ -12433,10 +17491,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 - f32.const 1 - i32.const -100 - call $~lib/typedarray/Float32Array#indexOf i32.const 1 i32.ne if @@ -12449,9 +17555,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 - f32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -12462,7925 +17625,5830 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - f32.const 11 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 591 + 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 - 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.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 - i32.const 1 - global.set $~argumentsLength local.get $0 - f32.const -1 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 592 + i32.const 591 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 1 global.set $~argumentsLength - 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 - end - local.get $0 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#lastIndexOf + local.get $1 + i32.load offset=8 i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 594 + 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 - call $~lib/builtins/abort - unreachable - 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 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.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 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#lastIndexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 596 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable 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 + 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.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 - f32.const 1 - i32.const -10 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 598 + i32.const 593 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 -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 599 + 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 - call $~lib/builtins/abort - unreachable + 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 - 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.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 603 + i32.const 594 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 -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 - call $~lib/builtins/abort - unreachable + 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 - f32.const 5 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 + i32.const 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 605 + i32.const 595 i32.const 3 call $~lib/builtins/abort unreachable 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 + 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 - call $~lib/builtins/abort - unreachable + 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 - f32.const 10 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 607 + i32.const 596 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 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 + 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 - call $~lib/builtins/abort - unreachable + 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 - f32.const 5 - i32.const 1 - call $~lib/typedarray/Float32Array#indexOf i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 609 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 5 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf 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 + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 598 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/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) i32.const -1 - local.set $3 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 - local.get $0 + 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 $4 - i32.ge_s - i32.const 1 - local.get $4 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.tee $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 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 + i32.const 11 + i32.sub local.set $0 - loop $while-continue|0 - local.get $2 - local.get $4 - i32.lt_s + 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 $1 - local.get $0 local.get $2 - local.tee $3 + local.get $0 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.const 1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 + local.get $0 i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + i32.sub + local.set $0 + br $while-continue|039 end end i32.const -1 - local.set $3 + local.set $0 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 $0 i32.const -1 - local.set $3 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 + 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 9 + call $~lib/typedarray/Int64Array#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/Int64Array,i64>|inlined.041 + local.get $4 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 - local.get $2 + local.tee $3 i32.const 0 - i32.lt_s + local.get $3 select - local.set $2 - local.get $0 + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 + 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|042 + local.get $0 + local.get $3 + i32.lt_s if - local.get $1 - local.get $0 local.get $2 - local.tee $3 + local.get $0 + 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 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 + local.get $1 i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + i32.add + local.set $0 + br $while-continue|042 end end i32.const -1 - local.set $3 + local.set $1 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 - 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 i32.const 0 i32.const 1568 - i32.const 581 + i32.const 603 i32.const 3 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.044 + local.get $4 + 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.ne - if + i32.shr_u + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 $0 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne + local.get $1 if i32.const 0 i32.const 1568 - i32.const 585 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#indexOf + i32.const 0 + local.set $0 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 586 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $4 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - i32.const 10 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if + i32.shr_u + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 $0 - f64.const 1 - i32.const -100 - call $~lib/typedarray/Float64Array#indexOf + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 588 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f64.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 590 + i32.const 0 + 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 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + 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 - i32.const 1 - global.set $~argumentsLength - local.get $0 - f64.const 11 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 591 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f64.const -1 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 0 + local.set $0 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 592 + 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 - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f64.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if + i32.shr_u + local.tee $3 i32.const 0 - i32.const 1568 - i32.const 593 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + select + i32.eqz + 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 3 - i32.const 4 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 + local.get $1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 594 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 595 + 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.const 0 + local.get $3 + select + i32.eqz + 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 3 - i32.const 2 - call $~lib/typedarray/Float64Array#lastIndexOf + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 596 + i32.const 608 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 1 - i32.const 100 - call $~lib/typedarray/Float64Array#lastIndexOf i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 597 + 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 - call $~lib/builtins/abort - unreachable + 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/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 - local.get $0 - f64.const 1 - i32.const -10 - call $~lib/typedarray/Float64Array#lastIndexOf + local.get $1 i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 598 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 1 - i32.const -11 - call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 2 + local.set $0 i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 599 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|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/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 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Float64Array#subarray - local.tee $0 - i32.store offset=8 - local.get $0 - f64.const 3 - 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 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 4 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 604 + i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 5 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - 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/Uint64Array,u64> + (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 605 - i32.const 3 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 9 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + 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/Uint64Array#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/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 - i32.ne + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/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 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end + i32.const -1 + local.set $1 + end + local.get $1 if i32.const 0 i32.const 1568 - i32.const 606 + i32.const 580 i32.const 3 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 + 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.const 0 + local.get $4 + select + i32.eqz + 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.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 11 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|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 + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 607 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 11 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + 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.const 0 + local.get $4 + select + i32.eqz + 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 -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 608 + i32.const 582 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.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.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|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/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 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 609 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 5 i32.const 2 - call $~lib/typedarray/Float64Array#indexOf + local.set $0 i32.const -1 + local.set $1 + 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 3 i32.ne if i32.const 0 i32.const 1568 - i32.const 610 + i32.const 584 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 - 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/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.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 - 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 $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 local.get $2 - i32.const 1 - i32.add - return - 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 - 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/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return + 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 $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.const 3 i32.ne if i32.const 0 - return + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 + 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 - local.tee $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 i32.const 4 - i32.ge_u + i32.le_u + i32.const 1 + local.get $4 select - i32.eqz - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|017 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 3 + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 local.get $1 - i32.const 2 + i32.const 1 i32.add - local.set $1 - br $while-continue|1 + local.set $0 + br $while-continue|017 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 586 + 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 + i32.const 10 + 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/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 + 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 + 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 - 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 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 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 48 - i32.or - i32.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 $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) - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u + 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 588 + 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 - local.set $1 - local.get $0 + i32.const 1 + global.set $~argumentsLength 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 + local.tee $1 i32.load offset=8 - i32.const 1 + i32.const 3 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) - local.get $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 + 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.sub - local.set $1 - end - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 + 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.0 local.get $2 - i32.const 1 - i32.shl + local.get $3 i32.add - local.get $1 - i32.const 48 - i32.or - i32.store16 - local.get $2 + local.get $3 i32.const 1 - i32.add - return + 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/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 $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 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 590 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 + i32.const 1 + global.set $~argumentsLength 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.const 3 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 $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|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/Uint64Array,u64>|inlined.05 local.get $2 + local.get $3 + i32.add + local.get $3 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 $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 - i64.sub - local.set $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/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 $1 - i64.const 10 - i64.lt_u + local.get $0 + i32.const -1 + i32.ne 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 + 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.const 4294967295 - i64.le_u - if + 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.011 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.011 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 - end - local.get $2 - ) - (func $~lib/typedarray/Int64Array#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/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.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $2 - local.get $0 local.get $3 + i32.ge_s + select 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/typedarray/Uint64Array#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/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 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.add - local.set $1 - br $for-loop|0 + i32.sub + local.set $0 + br $while-continue|024 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 -1 + local.set $0 + end + local.get $0 + i32.const 3 + i32.ne + if i32.const 0 - i32.gt_s + 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 - 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|027 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.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 + 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.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 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.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.tee $3 + 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 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.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 + 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 3 i32.shl i32.add + i64.load + i64.const 1 + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $0 - local.get $1 i32.const 1 + 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/Uint64Array,u64>|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/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 - call $~lib/memory/memory.copy + 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 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 1 + i32.sub + local.set $0 + br $while-continue|039 + 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 599 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + 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.const 0 + local.get $3 + select + i32.eqz + 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 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.tee $1 + i32.const 3 + i32.shl i32.add - else + 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.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.add + local.set $0 + br $while-continue|042 end end + i32.const -1 + local.set $1 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 $1 - f64.neg - else - 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 - 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.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 + 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 - 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 + i32.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + 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 - 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 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 - 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 - 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 - 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.const 0 local.get $3 - i32.lt_s - if + select + i32.eqz + 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.const 0 + local.get $3 + select + i32.eqz + 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 + 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 - 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 - 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 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.const 0 + local.get $3 + select + i32.eqz + 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 - 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 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 - 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 607 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - i32.load offset=4 - i32.add + i32.const 0 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.056 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.const 0 local.get $3 - i32.gt_s - if + select + i32.eqz + 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.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 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 - ) - (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.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 - 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 $0 + 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 - 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.059 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|060 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.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/Int16Array#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 + local.get $1 i32.const 1 - 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 609 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 + i32.const 2 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.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.lt_s - if + 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 - 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 - 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.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 - ) - (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.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 - i32.load16_s + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $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 + (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 - i32.const 12 - i32.add - local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 - i32.load offset=4 - local.set $3 + i32.const 0 + i32.store offset=8 local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 + i32.const 7024 + i32.store + local.get $1 + i32.const 7036 + i32.load + 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 $2 - i32.gt_s + i32.lt_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 + 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 $2 + local.set $0 br $for-loop|0 end 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 - 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.0 local.get $2 - i32.gt_s - if + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $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 $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 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/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 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 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.01 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|02 + 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 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 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 581 + 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.04 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|05 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 -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 - ) - (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 -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 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) + i32.const 0 + local.set $0 + 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.const 0 + local.get $4 + select + i32.eqz + 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 $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 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 583 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add + i32.const 2 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.010 local.get $2 - i32.gt_s - if + 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 $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.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 - ) - (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 584 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 + i32.const 3 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.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 $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.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/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 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 16 - i32.add + 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 - 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.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 $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 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/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 586 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 28 - i32.add + i32.const 10 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.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/Float32Array,f32>|inlined.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 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 $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/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 587 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 + i32.const -1 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 + 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 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 $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/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 + 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 - 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.const 1 + global.set $~argumentsLength + local.get $2 + local.tee $1 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.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 - 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|00 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 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#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 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 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.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 $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|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/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 591 + 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.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 + 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|012 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) + 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 local.get $0 - i32.load offset=4 + 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 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 + local.set $2 + 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.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.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 - 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 + f32.load + f32.const 3 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + local.get $0 i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + 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/Float32Array,f32>|inlined.026 + 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.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 $4 + i32.const 2 + i32.shl 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.026 local.get $0 - local.get $7 - i32.add - local.get $6 - i32.store8 + 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/Float32Array,f32>|inlined.029 + 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.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 - 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.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 - 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|030 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 -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/Float32Array,f32>|inlined.032 + 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.032 + local.get $2 i32.const 1 + i32.sub + i32.const 100 + local.get $2 + i32.const 100 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|033 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 1 + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|033 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.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 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 + 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.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/Float32Array,f32>|inlined.038 + 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.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 $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.038 local.get $0 - local.get $7 - i32.add - local.get $6 - i32.store8 + 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 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 i32.const 2 - i32.ge_s - if - local.get $0 - i32.load8_u - local.set $1 - local.get $0 + i32.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|042 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.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 3 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|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 - 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 + local.set $0 + br $while-continue|042 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.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/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 -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/Float32Array,f32>|inlined.044 + local.get $4 i32.load offset=8 - local.tee $0 - i32.const 1 - i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const 0 local.get $3 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 + 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|045 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 4 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|045 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 + if + i32.const 0 + i32.const 1568 + i32.const 604 + 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.047 local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 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 + local.get $3 + select + i32.eqz + 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.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 5 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + 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|048 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 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.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + 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 $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 + local.get $2 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add - local.tee $8 - local.get $8 - i32.load + 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 - local.get $4 - i32.shl - i32.xor - i32.store + 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 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 2 + i32.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|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.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 10 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 + local.get $1 i32.const 1 - i32.shl i32.add - local.get $6 - i32.store16 + local.set $0 + br $while-continue|054 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 607 + 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.056 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.const 0 + local.get $3 + select + i32.eqz + 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 $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 11 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 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|057 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 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 1 + i32.const 2 i32.shr_u - local.tee $0 + local.tee $3 i32.const 1 i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 + 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 $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|060 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 - end - br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $0 - i32.const 256 - i32.lt_s - if + local.tee $1 + i32.const 2 + i32.shl + i32.add + 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.add + local.set $0 + br $while-continue|060 + 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 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.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.set $2 - local.get $1 - local.set $4 - loop $for-loop|0 + local.get $3 + i32.lt_s + if 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 + local.get $0 + local.tee $1 + i32.const 2 + i32.shl + i32.add + 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.add + local.set $0 + br $while-continue|063 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 + 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/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 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) + 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 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 + i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.set $4 + 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 $4 - i32.const 0 - i32.gt_s + 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 + 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 + 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.const 0 + local.get $4 + select + i32.eqz + 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 1 - i32.shl - i32.add - i32.load16_u - 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.const 0 + local.get $4 + select + i32.eqz + 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 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 + local.get $3 + local.get $0 + local.tee $1 + i32.const 3 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 + 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.shl i32.add + local.set $0 + br $while-continue|02 + 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 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.const 0 + local.get $4 + select + i32.eqz + 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.lt_s + if local.get $3 - i32.store16 local.get $0 - local.get $7 - i32.const 1 + local.tee $1 + i32.const 3 i32.shl i32.add - local.get $6 - i32.store16 + 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.add + local.set $0 + br $while-continue|05 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 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 3 + i32.shr_u + local.tee $4 + i32.const 0 local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load16_u - local.set $1 - local.get $0 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|08 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.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.07 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|08 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 + 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 - ) - (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 $3 + 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/Float64Array,f64>|inlined.010 + local.get $2 i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - local.tee $0 - i32.const 1 + local.tee $4 + i32.const 2 i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $3 + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + local.get $2 i32.load offset=4 - local.set $5 - local.get $0 - i32.const 2 - i32.eq - 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.set $3 + loop $while-continue|011 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.store16 offset=2 - local.get $5 + local.get $3 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 + 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.010 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|011 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 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.get $4 + i32.const 3 + i32.ne + if i32.const 0 - i32.gt_s - if + 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 - 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.013 + 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|014 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 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 + 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 - 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.016 + local.get $1 + i32.const 1 + i32.add + local.set $0 + br $while-continue|017 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 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 3 + i32.shr_u + local.tee $4 + i32.const 10 + 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.019 + local.get $2 + i32.load offset=4 + local.set $3 + loop $while-continue|020 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 + f64.load + f64.const 1 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 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 + local.set $0 + br $while-continue|020 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 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 2 + i32.const 3 i32.shr_u - local.tee $0 + local.tee $3 + i32.const -100 + i32.le_s i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 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 + select + local.set $0 + 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 $1 + loop $while-continue|023 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.store offset=4 - local.get $5 + local.get $1 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 + 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.022 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|023 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 - 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 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.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 + 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 + 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 - 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 0 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + 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|00 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 + end + i32.const -1 + local.set $0 + end + 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 + 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 $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.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.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 - 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.get $2 + local.tee $0 + i32.const 3 i32.shl i32.add - local.get $6 - i32.store + 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 - 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 591 + i32.const 3 + call $~lib/builtins/abort + unreachable 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.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 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 + global.set $~argumentsLength 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.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.011 + local.get $1 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $0 + 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.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|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 $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.get $0 + local.set $3 + loop $while-continue|012 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 $3 local.get $2 - i32.store offset=4 - local.get $5 + local.tee $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.011 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 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|012 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 - 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 + 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.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.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.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.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|018 + 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 3 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|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/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 - 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 + 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 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 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store + 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 - i32.const 2 - i32.ge_s - if - local.get $0 - i64.load - local.set $5 - local.get $0 + 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 - 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.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 - 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 $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 $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 + 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 $8 + 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.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + i32.sub + i32.const 2 local.get $2 - 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) + 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.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 $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + 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.sub + local.set $0 + br $while-continue|030 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 - 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.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.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 + 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 $2 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|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 - 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 + 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 3 i32.shl i32.add - local.get $5 - i64.store + f64.load + f64.const 1 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store + i32.const 1 + i32.sub + local.set $0 + br $while-continue|033 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.ge_s - if + 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/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 - 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.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 1 + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 + 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 $0 + br $while-continue|036 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 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 $8 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 + 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 $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|039 + 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.038 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|039 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 + 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 - 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 4 + i32.const 9 + call $~lib/typedarray/Float64Array#subarray + local.tee $4 + i32.store offset=8 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.041 local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 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 + local.get $3 + select + i32.eqz + 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 $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 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 + local.tee $1 + i32.const 3 i32.shl i32.add - local.get $5 - f32.store - local.get $0 - local.get $3 - i32.const 2 - i32.shl + 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.add - local.get $7 - f32.store + local.set $0 + br $while-continue|042 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 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.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.const 0 + local.get $3 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|045 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 4 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 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 - 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 - 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 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $8 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 - 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 - 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.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.const 0 + local.get $3 + select + i32.eqz + 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.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.050 + local.get $4 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $3 + i32.const 0 + local.get $3 + select + i32.eqz + 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 $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 + local.get $1 + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 390 + i32.const 606 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.const 0 + local.get $3 + select + i32.eqz + 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.const 0 + local.get $3 + select + i32.eqz + 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 @@ -20390,3230 +23458,4328 @@ 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 + local.get $1 + i32.const 100 + i32.ge_u 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 - 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 - 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 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $1 i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne + local.get $0 + select + i32.eqz 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 $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.const 1 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + select + i32.eqz + if + 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) + (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 + 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/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 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/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 - 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 - 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 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_u + call $~lib/util/number/itoa_buffered 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.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/Uint32Array#__get - i32.const 1 - i32.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/Uint32Array#__get - i32.const 4 - i32.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/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 + 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/Int64Array,i64> - (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) + 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 $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 - 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 3824 - 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/Int64Array#__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/Int64Array#__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/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 - 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/Uint64Array,u64> - (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 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_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 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_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/Uint64Array#__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/Uint64Array#__get - i64.const 4 - i64.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/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 + 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/Float32Array,f32> - (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 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 - i32.const 1 - f32.const 2 - 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 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 + 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 2 + local.get $0 + local.get $1 + i32.const 1 i32.shl - local.tee $8 i32.add - f32.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 3888 i32.load - call_indirect $0 (type $f32_i32_i32_=>_f32) - f32.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 - 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/Float32Array#__get - f32.const 1 - f32.ne + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + local.get $1 + 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 48 + i32.or + i32.store16 + i32.const 1 + return end local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - 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 + local.tee $0 + call $~lib/util/number/utoa32_dec_lut 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 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> - (local $0 i32) + (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 $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 - 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 - f64.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.add - local.get $9 - local.get $3 - local.get $1 - i32.const 3920 + 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 - call_indirect $0 (type $f64_i32_i32_=>_f64) - f64.store - local.get $3 i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 i32.add - local.set $3 - br $for-loop|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/Float64Array#__get - f64.const 1 - f64.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/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 + 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 - 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 - i32.const 0 - i32.const 1568 - i32.const 413 - 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.load offset=8 - 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 414 - 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 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne + local.get $1 + i64.const 10 + i64.lt_u if - i32.const 0 - i32.const 1568 - i32.const 415 - 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 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne + local.get $1 + i64.const 4294967295 + i64.le_u if - i32.const 0 - i32.const 1568 - i32.const 416 - 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 local.get $0 - 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 ) - (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 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - (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/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) - 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.shr_u + local.set $0 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 + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.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 - 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 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 + i32.const 32336 + i32.const 32384 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 - 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 - 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 + (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 - 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 - end - local.get $0 - 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 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $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/Int64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $11 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 + 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.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if + local.set $8 + loop $while-continue|0 + local.get $8 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/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 + 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.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 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $8 + global.get $~lib/util/number/_K 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 + global.set $~lib/util/number/_K + local.get $7 + local.set $1 + local.get $9 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 + local.get $8 + i32.sub 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 + i32.shl + i32.const 10032 + i32.add + i64.load32_u + i64.mul + local.set $3 local.get $0 - i32.load + local.get $6 + i32.const 1 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 + local.tee $5 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $5 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.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/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 + local.get $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 - i32.const 0 - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer + 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 + local.get $5 + f64.convert_i32_s + f64.ne + i32.add 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 - local.get $2 - local.get $1 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 - i32.const 6592 + 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 + 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 - call_indirect $0 (type $i32_i32_i32_=>_none) + 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 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 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 + i32.load offset=8 + 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 - 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.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 @@ -23621,542 +27787,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 - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> - (local $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 - local.get $0 - i32.const 1 - i32.const 6448 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $1 + i32.load offset=8 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 + 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 $~lib/typedarray/Int16Array#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.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.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 + 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 @@ -24164,164 +28165,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 @@ -24329,4786 +28360,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 - 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/Int8Array#__get - i32.const 6912 - local.get $1 - i32.const 1 - i32.sub + ) + (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 + 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 + local.get $2 + i32.gt_s + if 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 + ) + (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 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne + i32.load offset=8 + i32.const 3 + 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.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne + 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 + 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 + i32.load offset=4 + 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 + 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 $3 + i32.add + i64.load8_u + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end 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 - 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 + local.get $0 + i32.load offset=4 + i32.const 32 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.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 + 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 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 3 + i32.shl + i32.add 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 + local.get $2 i32.const 1 + i32.shl i32.add - local.set $0 - 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 + i64.load16_s + i64.store 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 + local.set $2 + br $for-loop|0 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 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__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/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.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 56 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 + local.set $0 + i32.const 10564 i32.load - local.tee $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int16Array#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 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 $1 + 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 $1 local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.const 6912 + i32.add + i64.load8_s + i64.store 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.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/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 - 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 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#__get + ) + (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/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 + 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/Uint16Array#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/Uint16Array#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 - 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 i32.const 1 + i32.shr_s + local.tee $7 i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Uint16Array#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/Uint16Array#__get - i32.const 6912 - local.get $1 - i32.const 1 - i32.sub + 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 + i32.gt_s 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 - 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 + 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/Uint8Array,u8>|inlined.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 + local.get $2 + local.tee $3 + i32.const 256 i32.lt_s if - local.get $2 local.get $0 - call $~lib/typedarray/Uint64Array#__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 - i64.extend_i32_s - i64.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_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 - 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/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 - 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.shr_s + local.tee $7 + i32.const 1 + i32.shl i32.add - local.set $0 - 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 - if - local.get $2 + i32.load16_s + local.set $3 local.get $0 - call $~lib/typedarray/Float32Array#__get - i32.const 6912 - local.get $1 + local.get $4 i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne + 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 - 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.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 $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/Float32Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - 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 - local.get $0 + local.get $1 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 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - (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/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.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 - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $3 local.get $0 - i32.const 6912 + i32.load16_s + local.set $1 local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set local.get $0 + local.get $4 i32.const 1 + i32.shl i32.add - local.set $0 - br $for-loop|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 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Float64Array#__get - i32.const 6912 + 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 - 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 $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 - 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 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 $5 + call $~lib/rt/tlsf/__free 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 + i32.load16_s offset=2 + local.set $1 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 + i32.load16_s + i32.store16 offset=2 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 + 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 $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 $0 + i32.load16_s offset=2 + local.set $3 + local.get $0 + i32.load16_s + 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/Int16Array,i16>|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_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 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort + end 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 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 - 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 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 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 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 $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 $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 - 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/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 + local.tee $5 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.const 7424 - i32.store offset=12 - 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 + 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 - 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 + i32.load offset=4 + local.set $1 local.get $0 + 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/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 - 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/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 - 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 + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.gt_u local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set + 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 - 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 $1 + i32.lt_u 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 + 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 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/Uint32Array#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 $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 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 $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 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 + 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 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.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 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set + i64.load offset=8 + local.set $5 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 + i64.load + i64.store offset=8 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 $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 - 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 + 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 + i64.lt_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 - 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 + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (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 + i64.lt_s local.get $0 - i32.const 7456 - call $~lib/string/String.__eq + 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.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/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 $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 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $2 + 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 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.ne + 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 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 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 $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 + 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 + f32.load + local.set $5 + local.get $0 + 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 + 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 + 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 + 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 $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - (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/Int16Array#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 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__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 $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 $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.const 20 - i32.sub - i32.load offset=16 + i32.reinterpret_f32 local.tee $2 - local.set $5 local.get $2 + i32.const 31 + i32.shr_s 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 + i32.shr_u + i32.xor local.tee $2 - i32.store + 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 - i32.store - local.get $2 + local.get $1 + f32.lt local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 + 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 - 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/Int16Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 707 - i32.const 5 - call $~lib/builtins/abort + 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.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 + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + (func $~start + call $start:std/typedarray + ) + (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/Uint16Array#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 - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.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 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 + 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/Uint16Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint16Array#__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 - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - 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/Int32Array#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 - call $~lib/typedarray/Int32Array#__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 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 - 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/Int32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 707 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - 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 + 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) @@ -29116,372 +33384,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 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -29489,372 +33850,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) @@ -29862,489 +34316,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) @@ -30352,376 +34549,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) @@ -30730,375 +34783,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) @@ -31106,1129 +35015,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) @@ -32237,374 +35668,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) @@ -32613,9822 +35938,6562 @@ (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 + 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 -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 $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 + 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 + 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 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 735 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + i32.const 3 + i32.shl + local.tee $4 + local.get $0 + i32.load offset=4 + i32.add + i64.load + local.tee $5 + local.get $4 + local.get $1 + i32.load offset=4 + i32.add + i64.load + local.tee $6 + i64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 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 - 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.const 0 - local.get $3 - select - i32.eqz - 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.const 0 - local.get $3 - select - i32.eqz - 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 - end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 - 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) + (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 + 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 11 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 local.get $1 - local.get $0 i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 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 + local.get $3 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 + 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 - 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) + i64.const 9 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + 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.store + 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 12 - i32.const 13 - call $~lib/rt/itcms/__new + i32.const 10 + call $~lib/typedarray/Int64Array#constructor local.tee $1 - i32.store + i32.store offset=12 global.get $~lib/memory/__stack_pointer + i32.const 10304 + i32.store offset=16 local.get $1 - local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 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/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 + 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 2 - 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.const 0 - i32.gt_s - select - else + i32.store offset=16 local.get $1 - local.get $4 + 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 - local.get $4 - i32.add - local.tee $1 - i32.const 0 + 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 - 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 8 - 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 2 - 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 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 - ) - (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 0 - i32.store - local.get $0 - local.tee $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) + br_if $folding-inner0 local.get $1 - local.get $4 + i32.load offset=4 + i32.const 16 i32.add - local.tee $0 - i32.const 0 + 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.const 0 - i32.gt_s - select - else + i32.store offset=16 local.get $1 - local.get $4 + 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) @@ -42436,181 +42501,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) @@ -42619,202 +43013,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) @@ -42822,1137 +43458,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.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $3 + i32.load offset=4 + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const nan:0x8000000000000 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + i32.const 0 + local.set $0 + i32.const 0 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $2 + select + i32.eqz + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $3 + i32.load offset=4 + local.set $1 + loop $while-continue|0238 + local.get $0 + local.get $2 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $12 + local.get $12 + f64.ne + local.get $12 + f64.const nan:0x8000000000000 + f64.eq + select + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0238 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store offset=24 + local.get $3 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $3 + i32.load offset=4 + local.set $2 + loop $while-continue|0239 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const nan:0x400000 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0239 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 636 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + i32.const 0 + local.set $0 + i32.const 0 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $2 + select + i32.eqz + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $3 + i32.load offset=4 + local.set $1 + loop $while-continue|062 + local.get $0 + local.get $2 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $11 + local.get $11 + f32.ne + local.get $11 + f32.const nan:0x400000 + f32.eq + select + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|062 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 637 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int8Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Int8Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint8Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + local.get $2 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint8Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + local.get $2 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int16Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Int16Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint16Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Uint16Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Int32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Uint32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Int64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Uint64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 8912 + i32.store offset=8 + local.get $0 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 4 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Float32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 10096 + i32.store offset=8 + local.get $0 + i32.const 10096 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Float32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 10096 + i32.store offset=8 + local.get $0 + i32.const 10096 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 5 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Float64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 10096 + i32.store offset=8 + local.get $0 + i32.const 10096 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Float64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=4 + local.get $1 + i32.const 10096 + i32.store offset=8 + local.get $0 + i32.const 10096 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $1 + i32.store offset=24 + local.get $1 + i32.load offset=8 + if + i32.const 0 + i32.const 1568 + i32.const 714 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $1 + i32.store offset=24 + local.get $1 + i32.load offset=8 + if + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 + i32.load + local.tee $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|00 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $2 + i32.const 10224 + local.get $2 + call $~lib/array/Array#__get + i32.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 @@ -43961,22 +60052,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 @@ -43984,23 +60075,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 @@ -44009,35 +60100,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 @@ -44046,22 +60163,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 @@ -44069,23 +60186,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 @@ -44094,1029 +60211,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) @@ -45124,418 +61089,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 @@ -45543,72 +61385,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 @@ -45616,284 +61494,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) @@ -45901,7 +61679,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 @@ -45932,99 +61720,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/std/uri.optimized.wat b/tests/compiler/std/uri.optimized.wat index 6654285147..b37d772288 100644 --- a/tests/compiler/std/uri.optimized.wat +++ b/tests/compiler/std/uri.optimized.wat @@ -1,10 +1,9 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -153,15 +152,6 @@ (data (i32.const 4336) "\03\00\00\00 \00\00\00\00\00\00\00 ") (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) @@ -209,170 +199,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 1248 - 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 1248 + 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 20748 - 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 20748 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1248 + 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 1248 - 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 1248 - 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 4336 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 4340 + 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 4336 - i32.load - i32.gt_u - if - i32.const 1376 - i32.const 1440 - 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 4340 - 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 @@ -660,12 +634,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 @@ -1019,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 i32.const 0 global.set $~lib/rt/itcms/visitCount local.get $0 @@ -1082,7 +1061,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 @@ -1162,7 +1146,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 20748 i32.ge_u if @@ -1172,20 +1156,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1198,11 +1182,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 +1199,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 +1225,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,11 +1343,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 1184 + i32.const 1248 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $2 i32.const 1073741820 i32.gt_u if @@ -1369,50 +1427,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 @@ -1420,18 +1482,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 @@ -1439,18 +1501,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 @@ -1462,7 +1524,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1475,12 +1537,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 @@ -1494,54 +1556,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 @@ -1551,143 +1613,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1695,7 +1796,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1728,102 +1829,763 @@ 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.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 - i32.const 1184 - i32.const 1248 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable + 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 - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + local.get $2 + i32.const 4 + i32.and 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 + 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.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $2 + i32.const 2 + i32.and if - call $~lib/rt/tlsf/initialize + 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 - 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.const 1 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 + 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) @@ -1835,6 +2597,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 @@ -2036,33 +2816,6 @@ call $~lib/memory/memory.copy local.get $3 ) - (func $~lib/util/uri/storeHex (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 37 - i32.store16 - local.get $0 - local.get $2 - i32.const 4 - i32.shr_u - i32.const 15 - i32.and - i32.const 1676 - i32.add - i32.load8_u - local.get $2 - i32.const 15 - i32.and - i32.const 1676 - i32.add - i32.load8_u - i32.const 16 - i32.shl - i32.or - i32.store offset=2 - ) (func $~lib/util/uri/encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -2080,22 +2833,22 @@ local.get $1 i32.const 1 i32.shl - local.tee $8 + local.tee $9 i32.const 1 call $~lib/rt/itcms/__new local.set $3 loop $while-continue|0 local.get $1 - local.get $5 + local.get $6 i32.gt_u if block $while-break|0 - local.get $5 - local.set $6 + local.get $6 + local.set $5 loop $do-continue|1 block $do-break|1 local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.shl i32.add @@ -2114,34 +2867,34 @@ i32.load8_u br_if $do-break|1 local.get $1 - local.get $5 + local.get $6 i32.const 1 i32.add - local.tee $5 + local.tee $6 i32.gt_u br_if $do-continue|1 end end local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $8 + local.get $9 local.get $7 - local.get $5 local.get $6 + local.get $5 i32.sub i32.const 1 i32.shl - local.tee $9 + local.tee $8 i32.add i32.lt_u if local.get $3 local.get $7 - local.get $9 + local.get $8 i32.add - local.tee $8 + local.tee $9 call $~lib/rt/itcms/__renew local.set $3 end @@ -2149,23 +2902,22 @@ local.get $7 i32.add local.get $0 - local.get $6 + local.get $5 i32.const 1 i32.shl i32.add - local.get $9 + local.get $8 call $~lib/memory/memory.copy local.get $7 - local.get $9 + local.get $8 i32.add local.set $7 local.get $1 - local.get $5 + local.get $6 i32.le_u br_if $while-break|0 end - local.get $8 - local.get $7 + local.get $9 i32.const 6 i32.const 24 local.get $4 @@ -2193,7 +2945,7 @@ i32.le_u if (result i32) local.get $1 - local.get $5 + local.get $6 i32.le_u if i32.const 1584 @@ -2205,18 +2957,18 @@ end i32.const 1 local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add - local.tee $5 + local.tee $6 i32.const 1 i32.shl i32.add i32.load16_u - local.tee $6 + local.tee $5 i32.const 57343 i32.gt_u - local.get $6 + local.get $5 i32.const 56320 i32.lt_u select @@ -2228,7 +2980,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 1023 i32.and local.get $4 @@ -2248,44 +3000,96 @@ i32.const 128 i32.lt_u select + local.get $7 + local.tee $5 i32.add - local.tee $6 + local.tee $7 i32.lt_u if local.get $3 - local.get $6 + local.get $7 i32.const 1 i32.shl - local.get $6 + local.get $7 local.get $1 i32.const 1 i32.gt_u select - local.tee $8 + local.tee $9 call $~lib/rt/itcms/__renew local.set $3 end local.get $4 i32.const 128 i32.lt_u - if + if (result i32) local.get $3 + local.get $5 + i32.add + local.tee $7 + i32.const 37 + i32.store16 local.get $7 local.get $4 - call $~lib/util/uri/storeHex + i32.const 4 + i32.shr_u + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + local.get $4 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + local.get $5 + i32.const 6 + i32.add else + local.get $3 local.get $4 i32.const 2048 i32.lt_u - if + if (result i32) local.get $3 + local.get $5 + i32.add + local.tee $7 + i32.const 37 + i32.store16 local.get $7 local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - call $~lib/util/uri/storeHex + local.tee $7 + i32.const 4 + i32.shr_u + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + local.get $7 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + local.get $5 + i32.const 6 + i32.add else local.get $3 local.get $4 @@ -2293,30 +3097,79 @@ i32.lt_u if (result i32) local.get $3 + local.get $5 + i32.add + local.tee $7 + i32.const 37 + i32.store16 local.get $7 local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - call $~lib/util/uri/storeHex + local.tee $7 + i32.const 4 + i32.shr_u + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u local.get $7 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + local.get $5 i32.const 6 i32.add else local.get $3 + local.get $5 + i32.add + local.tee $7 + i32.const 37 + i32.store16 local.get $7 local.get $4 i32.const 18 i32.shr_u i32.const 240 i32.or - call $~lib/util/uri/storeHex - local.get $3 + local.tee $7 + i32.const 4 + i32.shr_u + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u local.get $7 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + local.get $3 + local.get $5 i32.const 6 i32.add - local.tee $6 + local.tee $7 + i32.add + local.tee $5 + i32.const 37 + i32.store16 + local.get $5 local.get $4 i32.const 12 i32.shr_u @@ -2324,12 +3177,32 @@ i32.and i32.const 128 i32.or - call $~lib/util/uri/storeHex - local.get $6 + local.tee $5 + i32.const 4 + i32.shr_u + i32.const 1676 + i32.add + i32.load8_u + local.get $5 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + local.get $7 i32.const 6 i32.add end local.tee $7 + i32.add + local.tee $5 + i32.const 37 + i32.store16 + local.get $5 local.get $4 i32.const 6 i32.shr_u @@ -2337,34 +3210,68 @@ i32.and i32.const 128 i32.or - call $~lib/util/uri/storeHex + local.tee $5 + i32.const 4 + i32.shr_u + i32.const 1676 + i32.add + i32.load8_u + local.get $5 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + local.get $7 + i32.const 6 + i32.add end - local.get $3 - local.get $7 - i32.const 6 - i32.add local.tee $7 + i32.add + local.tee $5 + i32.const 37 + i32.store16 + local.get $5 local.get $4 i32.const 63 i32.and i32.const 128 i32.or - call $~lib/util/uri/storeHex + local.tee $5 + i32.const 4 + i32.shr_u + i32.const 1676 + i32.add + i32.load8_u + local.get $5 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + local.get $7 + i32.const 6 + i32.add end - local.get $7 - i32.const 6 - i32.add local.set $7 - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $while-continue|0 end end end local.get $7 - local.get $8 + local.get $9 i32.lt_u if (result i32) local.get $3 @@ -2374,17 +3281,6 @@ local.get $3 end ) - (func $~lib/uri/encodeURIComponent (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1068 - call $~lib/util/uri/encode - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2411,7 +3307,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 @@ -2425,15 +3321,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -2441,20 +3340,20 @@ i32.eqz 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 @@ -2467,33 +3366,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 @@ -2501,74 +3400,6 @@ end i32.eqz ) - (func $~lib/uri/encodeURI (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 3388 - call $~lib/util/uri/encode - ) - (func $~lib/util/uri/loadHex (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $1 - i32.load16_u - local.set $0 - local.get $1 - i32.load16_u offset=2 - local.tee $1 - i32.const 32 - i32.or - i32.const 39 - i32.rem_u - i32.const 9 - i32.sub - local.get $0 - i32.const 32 - i32.or - i32.const 39 - i32.rem_u - i32.const 9 - i32.sub - i32.const 4 - i32.shl - i32.or - i32.const -1 - local.get $1 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - local.get $1 - i32.const 32 - i32.or - i32.const 97 - i32.sub - i32.const 6 - i32.lt_u - i32.or - i32.const 0 - local.get $0 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - local.get $0 - i32.const 32 - i32.or - i32.const 97 - i32.sub - i32.const 6 - i32.lt_u - i32.or - select - select - ) (func $~lib/util/uri/decode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -2577,6 +3408,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 i32.eqz if @@ -2588,7 +3420,7 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.set $4 + local.set $8 loop $while-continue|0 local.get $1 local.get $3 @@ -2596,7 +3428,7 @@ if block $while-break|0 local.get $3 - local.set $5 + local.set $4 loop $while-continue|1 local.get $1 local.get $3 @@ -2608,7 +3440,7 @@ i32.shl i32.add i32.load16_u - local.tee $6 + local.tee $5 i32.const 37 i32.ne else @@ -2623,35 +3455,35 @@ end end local.get $3 - local.get $5 + local.get $4 i32.gt_u if - local.get $4 - local.get $7 + local.get $6 + local.get $8 i32.add local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.shl i32.add local.get $3 - local.get $5 + local.get $4 i32.sub i32.const 1 i32.shl - local.tee $5 + local.tee $4 call $~lib/memory/memory.copy - local.get $5 - local.get $7 + local.get $4 + local.get $6 i32.add - local.set $7 + local.set $6 local.get $1 local.get $3 i32.le_u br_if $while-break|0 end i32.const 1 - local.get $6 + local.get $5 i32.const 37 i32.ne local.get $1 @@ -2669,8 +3501,64 @@ i32.add i32.const 1 i32.shl - call $~lib/util/uri/loadHex - local.tee $6 + i32.add + local.tee $4 + i32.load16_u offset=2 + local.set $5 + local.get $4 + i32.load16_u + local.tee $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + local.get $4 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + i32.or + if (result i32) + local.get $5 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + local.get $5 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + i32.or + else + i32.const 0 + end + if (result i32) + local.get $5 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + local.get $4 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + i32.const 4 + i32.shl + i32.or + else + i32.const -1 + end + local.tee $5 i32.const -1 i32.eq end @@ -2686,7 +3574,7 @@ i32.const 3 i32.add local.set $3 - local.get $6 + local.get $5 i32.const 128 i32.lt_u if @@ -2694,13 +3582,13 @@ if (result i32) i32.const 0 else - local.get $6 + local.get $5 i32.const 35 i32.sub i32.const 30 i32.lt_u if (result i32) - local.get $6 + local.get $5 i32.const 3561 i32.add i32.load8_u @@ -2710,7 +3598,7 @@ end if i32.const 37 - local.set $6 + local.set $5 local.get $3 i32.const 2 i32.sub @@ -2718,20 +3606,20 @@ end else i32.const 1 - local.get $6 + local.get $5 i32.const 24 i32.shl i32.const -1 i32.xor i32.clz i32.const 0 - local.get $6 + local.get $5 i32.const 192 i32.sub i32.const 56 i32.lt_u select - local.tee $8 + local.tee $9 i32.const 17 i32.mul i32.const 2 @@ -2739,23 +3627,23 @@ i32.const 1 i32.sub i32.shl - local.set $5 - local.get $6 + local.set $10 + local.get $5 i32.const 128 - local.get $8 + local.get $9 i32.shr_u i32.const 1 i32.sub i32.const 0 - local.get $8 + local.get $9 select i32.and - local.set $6 + local.set $5 loop $while-continue|2 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.tee $8 + local.tee $9 if block $while-break|2 local.get $1 @@ -2784,8 +3672,64 @@ i32.add i32.const 1 i32.shl - call $~lib/util/uri/loadHex - local.tee $9 + i32.add + local.tee $7 + i32.load16_u offset=2 + local.set $4 + local.get $7 + i32.load16_u + local.tee $7 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + local.get $7 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + i32.or + if (result i32) + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + local.get $4 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + i32.or + else + i32.const 0 + end + if (result i32) + local.get $4 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + local.get $7 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + i32.const 4 + i32.shl + i32.or + else + i32.const -1 + end + local.tee $7 i32.const -1 i32.eq end @@ -2801,51 +3745,53 @@ i32.const 3 i32.add local.set $3 - local.get $9 + local.get $7 i32.const 192 i32.and i32.const 128 i32.ne if i32.const 0 - local.set $6 + local.set $5 br $while-break|2 end - local.get $9 + local.get $7 i32.const 63 i32.and - local.get $6 + local.get $5 i32.const 6 i32.shl i32.or - local.set $6 + local.set $5 br $while-continue|2 end end end i32.const 1 - local.get $6 - i32.const 57344 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 55296 - i32.ge_u - select - i32.const 1 - local.get $6 + local.get $5 i32.const 1114111 i32.gt_u i32.const 1 - local.get $5 + local.get $10 i32.const -1 i32.eq local.get $5 - local.get $6 - i32.gt_u - select + local.get $10 + i32.lt_u select select + if (result i32) + i32.const 1 + else + local.get $5 + i32.const 57344 + i32.lt_u + i32.const 0 + local.get $5 + i32.const 55296 + i32.ge_u + select + end if i32.const 1584 i32.const 1632 @@ -2854,51 +3800,51 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 i32.const 65536 i32.ge_u if - local.get $4 - local.get $7 - i32.add local.get $6 + local.get $8 + i32.add + local.get $5 i32.const 65536 i32.sub - local.tee $6 + local.tee $5 i32.const 1023 i32.and i32.const 56320 i32.or i32.const 16 i32.shl - local.get $6 + local.get $5 i32.const 10 i32.shr_u i32.const 55296 i32.or i32.or i32.store - local.get $7 + local.get $6 i32.const 4 i32.add - local.set $7 + local.set $6 br $while-continue|0 end end - local.get $4 - local.get $7 - i32.add local.get $6 + local.get $8 + i32.add + local.get $5 i32.store16 - local.get $7 + local.get $6 i32.const 2 i32.add - local.set $7 + local.set $6 br $while-continue|0 end end end - local.get $7 + local.get $6 local.get $1 i32.const 1 i32.shl @@ -2911,41 +3857,19 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $6 local.get $1 i32.const 1 i32.shl i32.lt_u if (result i32) - local.get $4 - local.get $7 + local.get $8 + local.get $6 call $~lib/rt/itcms/__renew else - local.get $4 + local.get $8 end ) - (func $~lib/uri/decodeURIComponent (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - call $~lib/util/uri/decode - ) - (func $~lib/uri/decodeURI (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 0 - call $~lib/util/uri/decode - ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $~lib/arraybuffer/ArrayBufferView @@ -2977,6 +3901,7 @@ ) (func $start:std/uri (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -2993,9 +3918,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 memory.size @@ -3006,25 +3932,46 @@ i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store i32.const 1296 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store i32.const 1328 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store i32.const 1472 - call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1056 i32.store offset=8 i32.const 1056 - call $~lib/uri/encodeURIComponent + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 1056 i32.store offset=4 local.get $0 @@ -3043,12 +3990,18 @@ i32.const 1760 i32.store offset=8 i32.const 1760 - call $~lib/uri/encodeURIComponent + i32.const 1756 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 1760 i32.store offset=4 local.get $0 @@ -3067,12 +4020,18 @@ i32.const 1792 i32.store offset=8 i32.const 1792 - call $~lib/uri/encodeURIComponent + i32.const 1788 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 1792 i32.store offset=4 local.get $0 @@ -3091,12 +4050,18 @@ i32.const 1824 i32.store offset=8 i32.const 1824 - call $~lib/uri/encodeURIComponent + i32.const 1820 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 1824 i32.store offset=4 local.get $0 @@ -3115,12 +4080,18 @@ i32.const 1856 i32.store offset=8 i32.const 1856 - call $~lib/uri/encodeURIComponent + i32.const 1852 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 1856 i32.store offset=4 local.get $0 @@ -3139,12 +4110,18 @@ i32.const 1952 i32.store offset=8 i32.const 1952 - call $~lib/uri/encodeURIComponent + i32.const 1948 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 1984 i32.store offset=4 local.get $0 @@ -3163,12 +4140,18 @@ i32.const 2016 i32.store offset=8 i32.const 2016 - call $~lib/uri/encodeURIComponent + i32.const 2012 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 2048 i32.store offset=4 local.get $0 @@ -3187,7 +4170,12 @@ i32.const 2080 i32.store i32.const 2080 - call $~lib/uri/encodeURIComponent + i32.const 2076 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode i32.const 2112 i32.eq if @@ -3202,7 +4190,12 @@ i32.const 2160 i32.store i32.const 2160 - call $~lib/uri/encodeURIComponent + i32.const 2156 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode i32.const 2192 i32.eq if @@ -3217,12 +4210,18 @@ i32.const 2240 i32.store offset=8 i32.const 2240 - call $~lib/uri/encodeURIComponent + i32.const 2236 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 2272 i32.store offset=4 local.get $0 @@ -3241,12 +4240,18 @@ i32.const 2304 i32.store offset=8 i32.const 2304 - call $~lib/uri/encodeURIComponent + i32.const 2300 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 @@ -3265,12 +4270,18 @@ i32.const 2384 i32.store offset=8 i32.const 2384 - call $~lib/uri/encodeURIComponent + i32.const 2380 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 2416 i32.store offset=4 local.get $0 @@ -3289,12 +4300,18 @@ i32.const 2512 i32.store offset=8 i32.const 2512 - call $~lib/uri/encodeURIComponent + i32.const 2508 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 @@ -3313,12 +4330,18 @@ i32.const 2656 i32.store offset=8 i32.const 2656 - call $~lib/uri/encodeURIComponent + i32.const 2652 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 2688 i32.store offset=4 local.get $0 @@ -3337,12 +4360,18 @@ i32.const 2736 i32.store offset=8 i32.const 2736 - call $~lib/uri/encodeURIComponent + i32.const 2732 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 2768 i32.store offset=4 local.get $0 @@ -3361,12 +4390,18 @@ i32.const 2816 i32.store offset=8 i32.const 2816 - call $~lib/uri/encodeURIComponent + i32.const 2812 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 @@ -3385,12 +4420,18 @@ i32.const 2928 i32.store offset=8 i32.const 2928 - call $~lib/uri/encodeURIComponent + i32.const 2924 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 @@ -3409,12 +4450,18 @@ i32.const 3024 i32.store offset=8 i32.const 3024 - call $~lib/uri/encodeURIComponent + i32.const 3020 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 3072 i32.store offset=4 local.get $0 @@ -3433,12 +4480,18 @@ i32.const 3152 i32.store offset=8 i32.const 3152 - call $~lib/uri/encodeURIComponent + i32.const 3148 + i32.load + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode 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 3264 i32.store offset=4 local.get $0 @@ -3457,12 +4510,18 @@ i32.const 1056 i32.store offset=8 i32.const 1056 - call $~lib/uri/encodeURI + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 1056 i32.store offset=4 local.get $0 @@ -3481,12 +4540,18 @@ i32.const 1760 i32.store offset=8 i32.const 1760 - call $~lib/uri/encodeURI + i32.const 1756 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 1760 i32.store offset=4 local.get $0 @@ -3505,12 +4570,18 @@ i32.const 3504 i32.store offset=8 i32.const 3504 - call $~lib/uri/encodeURI + i32.const 3500 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 3504 i32.store offset=4 local.get $0 @@ -3529,12 +4600,18 @@ i32.const 1856 i32.store offset=8 i32.const 1856 - call $~lib/uri/encodeURI + i32.const 1852 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 1856 i32.store offset=4 local.get $0 @@ -3553,12 +4630,18 @@ i32.const 3552 i32.store offset=8 i32.const 3552 - call $~lib/uri/encodeURI + i32.const 3548 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 3584 i32.store offset=4 local.get $0 @@ -3577,12 +4660,18 @@ i32.const 2656 i32.store offset=8 i32.const 2656 - call $~lib/uri/encodeURI + i32.const 2652 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 2688 i32.store offset=4 local.get $0 @@ -3601,12 +4690,18 @@ i32.const 2736 i32.store offset=8 i32.const 2736 - call $~lib/uri/encodeURI + i32.const 2732 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 2768 i32.store offset=4 local.get $0 @@ -3625,12 +4720,18 @@ i32.const 2928 i32.store offset=8 i32.const 2928 - call $~lib/uri/encodeURI + i32.const 2924 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 @@ -3649,12 +4750,18 @@ i32.const 3152 i32.store offset=8 i32.const 3152 - call $~lib/uri/encodeURI + i32.const 3148 + i32.load + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode 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 3152 i32.store offset=4 local.get $0 @@ -3673,12 +4780,18 @@ i32.const 1056 i32.store offset=8 i32.const 1056 - call $~lib/uri/decodeURIComponent + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 1056 i32.store offset=4 local.get $0 @@ -3697,12 +4810,18 @@ i32.const 1760 i32.store offset=8 i32.const 1760 - call $~lib/uri/decodeURIComponent + i32.const 1756 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 1760 i32.store offset=4 local.get $0 @@ -3721,12 +4840,18 @@ i32.const 3648 i32.store offset=8 i32.const 3648 - call $~lib/uri/decodeURIComponent + i32.const 3644 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 3680 i32.store offset=4 local.get $0 @@ -3745,12 +4870,18 @@ i32.const 3712 i32.store offset=8 i32.const 3712 - call $~lib/uri/decodeURIComponent + i32.const 3708 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 3744 i32.store offset=4 local.get $0 @@ -3769,12 +4900,18 @@ i32.const 3776 i32.store offset=8 i32.const 3776 - call $~lib/uri/decodeURIComponent + i32.const 3772 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 3776 i32.store offset=4 local.get $0 @@ -3793,12 +4930,18 @@ i32.const 2736 i32.store offset=8 i32.const 2736 - call $~lib/uri/decodeURIComponent + i32.const 2732 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 2736 i32.store offset=4 local.get $0 @@ -3817,12 +4960,18 @@ i32.const 3808 i32.store offset=8 i32.const 3808 - call $~lib/uri/decodeURIComponent + i32.const 3804 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 3888 i32.store offset=4 local.get $0 @@ -3841,12 +4990,18 @@ i32.const 3936 i32.store offset=8 i32.const 3936 - call $~lib/uri/decodeURIComponent + i32.const 3932 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 3888 i32.store offset=4 local.get $0 @@ -3865,12 +5020,18 @@ i32.const 4016 i32.store offset=8 i32.const 4016 - call $~lib/uri/decodeURIComponent + i32.const 4012 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 3152 i32.store offset=4 local.get $0 @@ -3889,12 +5050,18 @@ i32.const 2416 i32.store offset=8 i32.const 2416 - call $~lib/uri/decodeURIComponent + i32.const 2412 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode 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 2384 i32.store offset=4 local.get $0 @@ -3913,12 +5080,18 @@ i32.const 1056 i32.store offset=8 i32.const 1056 - call $~lib/uri/decodeURI + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 1056 i32.store offset=4 local.get $0 @@ -3937,12 +5110,18 @@ i32.const 1760 i32.store offset=8 i32.const 1760 - call $~lib/uri/decodeURI + i32.const 1756 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 1760 i32.store offset=4 local.get $0 @@ -3961,12 +5140,18 @@ i32.const 3648 i32.store offset=8 i32.const 3648 - call $~lib/uri/decodeURI + i32.const 3644 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 3648 i32.store offset=4 local.get $0 @@ -3985,12 +5170,18 @@ i32.const 4144 i32.store offset=8 i32.const 4144 - call $~lib/uri/decodeURI + i32.const 4140 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 4176 i32.store offset=4 local.get $0 @@ -4009,12 +5200,18 @@ i32.const 4208 i32.store offset=8 i32.const 4208 - call $~lib/uri/decodeURI + i32.const 4204 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 4240 i32.store offset=4 local.get $0 @@ -4033,12 +5230,18 @@ i32.const 3776 i32.store offset=8 i32.const 3776 - call $~lib/uri/decodeURI + i32.const 3772 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 3776 i32.store offset=4 local.get $0 @@ -4057,12 +5260,18 @@ i32.const 2736 i32.store offset=8 i32.const 2736 - call $~lib/uri/decodeURI + i32.const 2732 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 2736 i32.store offset=4 local.get $0 @@ -4081,12 +5290,18 @@ i32.const 3808 i32.store offset=8 i32.const 3808 - call $~lib/uri/decodeURI + i32.const 3804 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 3808 i32.store offset=4 local.get $0 @@ -4105,12 +5320,18 @@ i32.const 2416 i32.store offset=8 i32.const 2416 - call $~lib/uri/decodeURI + i32.const 2412 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 2384 i32.store offset=4 local.get $0 @@ -4129,12 +5350,18 @@ i32.const 4272 i32.store offset=8 i32.const 4272 - call $~lib/uri/decodeURI + i32.const 4268 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 4272 i32.store offset=4 local.get $0 @@ -4153,12 +5380,18 @@ i32.const 4320 i32.store offset=8 i32.const 4320 - call $~lib/uri/decodeURI + i32.const 4316 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 4320 i32.store offset=4 local.get $0 @@ -4177,12 +5410,18 @@ i32.const 4016 i32.store offset=8 i32.const 4016 - call $~lib/uri/decodeURI + i32.const 4012 + i32.load + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode 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 4016 i32.store offset=4 local.get $0 diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index 3197001005..b33c391db1 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -1,10 +1,10 @@ (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 $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -35,15 +35,6 @@ (data (i32.const 1468) " \00\00\00\00\00\00\00 \00\00\00\03") (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,20 +1049,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - 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,23 +1164,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 +1242,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 +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 @@ -1430,72 +1436,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 @@ -1507,13 +1549,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 90338ab92d..c2f7a71575 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 147a01f0f8..dbe75c87b0 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 $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_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))) @@ -27,7 +27,7 @@ (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 20572)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22028)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) "\1c") @@ -72,101 +72,66 @@ (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,20 +1200,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1234,11 +1226,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 @@ -1248,10 +1243,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 @@ -1272,28 +1269,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 @@ -1390,11 +1387,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.gt_u if @@ -1405,50 +1471,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 @@ -1456,18 +1526,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 @@ -1475,18 +1545,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 @@ -1498,7 +1568,7 @@ end end local.get $2 - local.get $1 + local.get $4 i32.load i32.const -4 i32.and @@ -1511,12 +1581,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 @@ -1530,54 +1600,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 @@ -1587,143 +1657,182 @@ 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 - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - 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 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - 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 4 i32.sub 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 - local.tee $1 + local.tee $0 i32.const 4 i32.sub i32.const 0 i32.store - 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 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.sub i32.const 0 i32.store - 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 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 @@ -1731,7 +1840,7 @@ local.tee $1 i32.add local.set $0 - local.get $2 + local.get $3 local.get $1 i32.sub local.set $1 @@ -1764,2493 +1873,3551 @@ 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.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.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.const 1 - local.get $2 + i32.add local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - 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 $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 - i32.const 10 - i32.div_u - local.set $3 + 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.const 10 - i32.rem_u + 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 $break|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.set $3 - i32.const 0 + local.tee $3 + i32.const 1 + i32.add local.set $1 - br $break|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 - 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 + else 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 + 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 - local.get $0 - local.get $8 - i64.lt_u - select - select + i32.add + 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.tee $4 local.get $0 - local.get $2 - i64.add - local.set $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 br $while-continue|3 end end - local.get $3 - local.get $1 - i32.store16 - local.get $5 - return + 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 - 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 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - local.get $7 + ) + (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.const 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 - 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 + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + end local.get $2 - 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.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 + i32.const 0 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 + i32.eqz + 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 + local.set $2 + local.get $1 + local.set $3 + local.get $2 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.or + i32.const 1 + local.get $4 + local.tee $0 + i32.const 4 + i32.ge_u + select + i32.eqz if - 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 + 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 - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - local.get $0 + loop $while-continue|1 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 - 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 $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 + 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) @@ -4258,11 +5425,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 de202e3c43..f27d104813 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))) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) @@ -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,220 +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.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $1 - i32.load - i32.const 1 - i32.and - end - 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 @@ -924,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 @@ -987,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 @@ -1067,137 +844,242 @@ 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.const 1 + local.get $3 + select + if (result i32) + i32.const 1 + else + local.get $0 + i32.load + i32.const 1 + i32.and + end + 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 @@ -1234,13 +1116,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 9d1fadcbd3..2887713ff9 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -1,12 +1,12 @@ (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_=>_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_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -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,15 +94,18 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.set $2 + local.get $1 + local.set $3 + local.get $2 i32.const 7 i32.and - local.get $1 + local.get $3 i32.const 7 i32.and i32.or i32.const 1 - local.get $2 + local.get $4 local.tee $0 i32.const 4 i32.ge_u @@ -110,20 +113,20 @@ i32.eqz 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 +139,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 +173,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 +226,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 +661,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 +1020,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 +1088,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 +1173,7 @@ local.get $0 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 18220 i32.ge_u if @@ -1195,20 +1183,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1221,11 +1209,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 @@ -1235,10 +1226,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 @@ -1305,23 +1298,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 @@ -1331,18 +1376,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 @@ -1350,17 +1395,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 @@ -1371,7 +1416,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1385,10 +1430,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 @@ -1399,14 +1444,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 @@ -1416,26 +1461,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 @@ -1445,7 +1490,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 @@ -1491,554 +1576,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 e0d5972a53..9e10066ced 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 a4d98319a1..dbe733a2ea 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_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (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 4465028c63..767a39898e 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_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) + (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 17c22a0e2d..8ce0f49a81 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -3,12 +3,11 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) @@ -20,7 +19,7 @@ (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 18512)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18912)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) ",") @@ -32,6 +31,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.gt_u + if + i32.const 1168 + i32.const 1104 + i32.const 458 + i32.const 29 + 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 @@ -2753,7 +3801,7 @@ if (result i32) i32.const 1 else - local.get $0 + local.get $8 i32.load i32.const 1 i32.and @@ -2766,17 +3814,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 @@ -2788,20 +3837,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 6fef9b99c9..e0f1361365 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -1,13 +1,12 @@ (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 $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (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 @@ (data (i32.const 1516) " ") (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,20 +1037,20 @@ 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.const 1 - local.get $1 + local.get $0 select if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1167,11 +1063,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 @@ -1181,10 +1080,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 @@ -1251,23 +1152,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 @@ -1277,18 +1230,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 @@ -1296,17 +1249,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 @@ -1317,7 +1270,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1331,10 +1284,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 @@ -1345,14 +1298,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 @@ -1362,26 +1315,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 @@ -1391,14 +1344,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 @@ -1408,10 +1400,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 @@ -1424,7 +1416,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 10 i32.ne if @@ -1435,54 +1427,122 @@ 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.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 32 + 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 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 + 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 @@ -1493,20 +1553,16 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran 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 @@ -1519,18 +1575,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 @@ -1543,30 +1597,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 @@ -1578,32 +1618,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 @@ -1615,7 +1651,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 if i32.const 0 i32.const 1056 @@ -1624,10 +1660,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 @@ -1636,200 +1668,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 @@ -1863,7 +1913,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 @@ -1875,92 +1930,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